标签: sdl

OpenGL 显示空白屏幕。也许是由于着色器?

我的 OpenGL ES 应用程序无法运行。我使用 SDL 进行窗口管理,它保存上下文。环顾四周后,我注意到顶点着色器和片段着色器在调试器上显示为 0。连程序都是0。这会是一个原因吗?我按照着色器编译代码并将代码链接到之前制作的模板。

如果是的话,有什么问题吗?这是代码:

GLuint ShaderHelper::compileShader(GLenum type, std::string fileName) {

std::string fileContents;
std::ifstream fin;
std::string path;
// Getting the necessary path...
// These are abstractions for getting file contents
// from the main bundle.
if (type == GL_VERTEX_SHADER) {
    FileOpener opener;
    path = opener.retriveFileFromBundle(fileName, "vsh");
} else if (type == GL_FRAGMENT_SHADER) {
    FileOpener opener;
    path = opener.retriveFileFromBundle(fileName, "fsh");
} else {
    std::cout << "ERROR: Invalid shader type at filename " << fileName << std::endl;
    exit(1);
} …
Run Code Online (Sandbox Code Playgroud)

c++ sdl opengl-es ios

0
推荐指数
1
解决办法
1990
查看次数

SDL 窗口是在堆栈还是堆上分配的?

我想使用 C 和 SDL 创建一个游戏,并且想在堆上分配游戏窗口。我是否需要使用malloc()and then分配它,或者当我调用andfree()时,SDL 会自动执行分配吗?渲染器也一样吗?SDL_CreateWindowSDL_DestroyWindow

c sdl sdl-2

0
推荐指数
1
解决办法
320
查看次数

什么时候TGraphicControl.Paint叫?

我正在尝试编写一个自定义TGraphicControl后代,允许用户在VCL表单上嵌入SDL渲染表面.这将提供一种在表单中显示SDL动画的简单方法.

显然,使用Paint方法重绘了TGraphicControl.这种情况多久被召唤一次?只有当某些事情发生在使控件无效时,或者还有其他事情可以调用它吗?它如何与自己绘图的东西相互作用?

delphi vcl sdl image

-1
推荐指数
1
解决办法
1763
查看次数

什么是SDL_Surface?

我正在按照lazyfoo http://lazyfoo.net/tutorials/SDL/01_hello_SDL/index2.php的教程进行操作, 并在绘制到屏幕时使用'曲面'.它是什么,它与SDL_Texture类似?它与缓冲区有关吗?

c++ sdl

-1
推荐指数
1
解决办法
4029
查看次数

返回语句后函数能否继续?

考虑以下C++函数:

SDL_Surface* loadBMP(std::string path, SDL_Surface* loadedBMP){
    //Load bitmap
    SDL_Surface* loadedBMP = SDL_LoadBMP(path);
    if (loadedBMP == NULL){
        printf("Unable to load image %s! SDL Error: %s\n", path.c_str(), SDL_GetError());
    }

    return loadedBMP;

    //Magic
    SDL_FreeSurface(loadedBMP);
}
Run Code Online (Sandbox Code Playgroud)

现在,为了这个问题,假设这loadedBMP是一个先前声明的全局变量.

这是我的问题:有没有办法让函数在return语句后继续运行?在这个功能而言,是有办法有最后的线,SDL_FreeSurface(loadedBMP)之后运行return荷兰国际集团loadedBMP

c++ sdl return function

-1
推荐指数
2
解决办法
4762
查看次数

SDL2/C++无法加载图像

我没有错误,控制台窗口立即关闭,而不显示我的bmp和png文件.此外,所有DLL文件和图片都在正确的文件夹中(图片在我的Debug文件夹中,exe所在的位置)我正在使用visual studio 2013

  #include "stdafx.h"
  #include <iostream>
  #include <SDL.h>
  #include <SDL_image.h>
  #include <SDL_mixer.h>


int main(int argc, char *argv[])
{

bool quit = false;

SDL_Init(SDL_INIT_VIDEO);

SDL_Window* window = NULL;
window = SDL_CreateWindow("My First RPG", 100, 100, 600, 400, SDL_WINDOW_SHOWN);

if (window == NULL)
{
    std::cout << "Window couldn't be opened" << std::endl;
    return 0;
}

return 0;

SDL_Renderer* renderer = NULL;
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
SDL_Event* mainEvent = new SDL_Event();

SDL_Texture* background_image = NULL;
background_image = IMG_LoadTexture(renderer, "background.bmp");

if (background_image …
Run Code Online (Sandbox Code Playgroud)

c++ sdl

-1
推荐指数
1
解决办法
382
查看次数

OpenGL/C++ - 转换和VBOs/Shader不让我转换?

我实际上学习了一些OpenGL,我设法加载网格并在窗口中显示它.然后我用SDL做了一个函数,让我用箭头键旋转网格.但是当我潜入Shaders时我做了一些改变,但我不能为3D模型进行简单的旋转.

这是我的绘图功能:

        glMatrixMode(GL_MODELVIEW); //set the matrix to model view mode

        glPushMatrix(); // push the matrix

        glRotatef(1.0,0.0,0.0,1.0); //apply transformation

        //Primer buffer, modelo
        glBindBuffer(GL_ARRAY_BUFFER, _vboID);

        glEnableVertexAttribArray(0);

        glVertexAttribPointer( 0, 3, GL_FLOAT, GL_FALSE, 0, 0);

        glDrawArrays(GL_TRIANGLES, 0,vertices.size());

        glDisableVertexAttribArray(0);

        glBindBuffer(GL_ARRAY_BUFFER, 0);

        glPopMatrix();//pop the matrix

        glMatrixMode(GL_PROJECTION); // Apply projection matrix again
Run Code Online (Sandbox Code Playgroud)

Theese是我的着色器:

片段着色器(仅用于给出颜色)

#version 130

out vec3 color;

void main()
{
    color = vec3(0.0,0.5,1.0);

}
Run Code Online (Sandbox Code Playgroud)

顶点着色器(用它来乱搞并尝试):

    #version 130

in vec3 vertexPosition;

void main()
{
    gl_Position.x = vertexPosition.x;
    gl_Position.y = vertexPosition.y-1.0;
    gl_Position.z = vertexPosition.z;
    gl_Position.w = 1.0; …
Run Code Online (Sandbox Code Playgroud)

c++ opengl sdl vbo

-1
推荐指数
1
解决办法
577
查看次数

如何正确地将 uint8* 复制到 vector&lt;Uint8&gt;

我正在尝试从 Uint8* 制作 Uint8 向量,但由于某些原因某些值不相同。这是我的代码。

std::vector<Uint8> wav_vector = {}; 
Uint8* wav_buffer_;   
for (unsigned int i = 0; i < wav_length_; i++) {
  wav_vector.push_back(wav_buffer_[i]);
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试验证这些值:

for (unsigned int i = 0; i < wav_length_; i++){
    if (wav_buffer_[i]!=wav_vector[i]){
      cout<<i<<endl;
      printf("Orignal Buffer %u\n", wav_buffer_[i]);
      printf("Vector Buffer %u\n", wav_vector[i]);

    }
  }
Run Code Online (Sandbox Code Playgroud)

这些是我的示例输出:

Index: 0
Orignal Buffer 208
Vector Buffer 40

Index: 1
Orignal Buffer 72
Vector Buffer 3

Index: 2
Orignal Buffer 111
Vector Buffer 183

Index: 3
Orignal Buffer 1
Vector Buffer …
Run Code Online (Sandbox Code Playgroud)

c++ sdl wav uint uint8t

-1
推荐指数
1
解决办法
1万
查看次数

如何将局部结构传递给函数?

以下链接表示中定义的结构main没有函数调用的范围,因为它们是本地的,因此您应该全局定义结构。但是对于变量,最好在本地声明变量并通过指针传递给函数,而不是声明全局变量。

在纯 C 中有没有办法使用指针等将 main 中定义的结构传递给函数?如果您不介意,请使用示例程序来演示该方法。谢谢。

在哪里声明结构,在 main() 内部还是在 main() 外部?

这段代码有效,但不是我想要的。我想在main. 这可能吗?

#include <stdio.h>
#include <SDL2/SDL.h>

void function();

struct hexColour
    {
        Uint32 red;
    }hc;

int main(void)
{
    hc.red = 0xFFFF0000;
    function(hc);
    return 0;
}

void function(struct hexColour hc)
{
    printf("red is %x\n", hc.red);
}
Run Code Online (Sandbox Code Playgroud)

我想要的是:

int main(void)
{
    struct hexColour
    {
        Uint32 red;
    }hc;
    hc.red = 0xFFFF0000;
    function(hc);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c scope sdl pass-by-reference sdl-2

-2
推荐指数
1
解决办法
1687
查看次数

编译实现和头文件时出错

我正在尝试添加成员函数的定义,game.h但出现编译器错误,指出 void 函数是先前定义的。game.h和 也输出相同的错误game.cpp。这几乎就像pragma once不起作用?我在 Rider 中遇到错误,也在game.cpp文件中说了同样的事情,但仅限于 void 函数。

\n

游戏.h

\n
#pragma once\n\n#include "SDL2/SDL.h"\n\n\nclass Game{\npublic:\n\n    Game() {}\n    ~Game() {}\n\n    bool init(const char* title, int xPos, int yPos, int width,int height, int flags);\n\n\n\n    void render(){};\n    void update(){};\n    void handleEvents(){};\n    void clean(){};\n\n\n    bool running() {return m_bRunning;}\n\nprivate:\n\n    SDL_Window* m_pWindow;\n    SDL_Renderer* m_pRenderer;\n\n    bool m_bRunning{};\n};\n
Run Code Online (Sandbox Code Playgroud)\n

游戏.cpp

\n
#include <iostream>\n#include "game.h"\n\n\nbool Game::init(const char* title, int xPos, int yPos, int width, int height, int flags){\n\n …
Run Code Online (Sandbox Code Playgroud)

c++ sdl cmake header-files

-2
推荐指数
1
解决办法
304
查看次数

标签 统计

sdl ×10

c++ ×7

c ×2

sdl-2 ×2

cmake ×1

delphi ×1

function ×1

header-files ×1

image ×1

ios ×1

opengl ×1

opengl-es ×1

pass-by-reference ×1

return ×1

scope ×1

uint ×1

uint8t ×1

vbo ×1

vcl ×1

wav ×1