gpt4 book ai didi

c++ - SDL 和绑定(bind)缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:45:19 24 4
gpt4 key购买 nike

所以我一直在尝试理解 SDL 接口(interface)并将我的 OpenGL 和 freeglut 测试程序附加到它 - 从过剩引用中清除它。最有问题的部分是当我尝试附加着色器时 - 一切都在编译,但我不断收到段错误。清理后的程序版本为:

#include <SDL2/SDL.h>
#include <GL/glew.h>
#include <GL/glu.h>
#include <iostream>

using namespace std;

int main(){

SDL_Window *window;
SDL_GLContext *context;
GLuint vao;

SDL_Init( SDL_INIT_VIDEO );
SDL_CreateWindow("cookie", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
512, 512, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
SDL_GL_CreateContext(window);
SDL_GL_SetSwapInterval(1);
cout<<"Hi! It's my first instance"<<endl;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
cout<<"And it's my second - i can't reach here"<<endl;
}

我正在使用 Ubuntu 14.04、Radeon 8somethingsomething 显卡(如果它真的很重要的话)。我用来编译的命令是:

g++ main.cpp -lGL -lGLEW -lSDL2

附言。抱歉,我是 iostream 新手,我是从 C++ 开始编程的。

最佳答案

您永远不会为 window 赋值。当 SDL 取消引用传递给 SDL_GL_CreateContext 的指针时,它会崩溃,因为 window 中没有有效的指针值。

更新(固定代码)

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

SDL_Window * const window = SDL_CreateWindow(
"cookie",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
512, 512,
SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
if( !window ) {
cerr << "creating window failed" << endl;
return 1;
}

SDL_GLContext * const context = SDL_GL_CreateContext(window);
if( !context ) {
cerr << "creating OpenGL context failed" << endl;
return 1;
}
/* ... */

更新2

@keltar 在这里写了什么:https://stackoverflow.com/a/26645107/524368

关于c++ - SDL 和绑定(bind)缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26642170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com