gpt4 book ai didi

c++ - glBindBuffer 崩溃 - 使用 glew 的 VBO 实现

转载 作者:行者123 更新时间:2023-11-30 02:59:39 25 4
gpt4 key购买 nike

我一直在尝试在我的计算机上实现 VBO,但遇到了段错误:

Unhandled exception at 0x00000000 in attocube.exe: 0xC0000005: Access violation

错误出现在我在 void init() 中调用 glBindBuffer(GL_ARRAY_BUFFER, ID); 的行。我使用了以下问题的代码:How to get VBO working

#include <windows.h>
#include <iostream>
#include <GL/glew.h>
#include <GL/freeglut.h>

#pragma comment(lib,"glew32.lib")

GLuint ID;

void init(){
glewInit();
glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
glShadeModel(GL_FLAT);
glEnableClientState(GL_VERTEX_ARRAY);
float data[][2] = {{50,50},{100,50},{75,100}};
glGenBuffers(1,&ID);
glBindBuffer(GL_ARRAY_BUFFER, ID);
glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
}

void reshape(int w, int h){
glViewport(0,0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0f, (GLdouble) w, 0.0f, (GLdouble) h);
}

void display(){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f,0.0f,0.0f);
glBindBuffer(GL_ARRAY_BUFFER, ID);
glVertexPointer(2, GL_FLOAT, 2*sizeof(float), 0);
glDrawArrays(GL_TRIANGLES,0,3);
glFlush();
}

int main(int argc, char **argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(300,300);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}

我的配置如下:Windows 7/Geforce GTX 570/glew 1.9.0

最佳答案

您的代码缺少对所需 OpenGL 版本可用性的任何检查(或者在您使用扩展的情况下,如果存在扩展)。您始终必须检查请求的功能是否确实存在。

参见 http://glew.sourceforge.net/basic.html 的第 2 段

现在顶点缓冲对象是一个非常普遍的特性,它们不太可能不可用。但崩溃表明这正是问题所在。因此,请确保正确安装了正确的驱动程序。

关于c++ - glBindBuffer 崩溃 - 使用 glew 的 VBO 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12736691/

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