使用 glCreateVertexArrays 时的 OpenGL 异常
Posted
技术标签:
【中文标题】使用 glCreateVertexArrays 时的 OpenGL 异常【英文标题】:OpenGL exception when using glCreateVertexArrays 【发布时间】:2016-07-29 02:31:05 【问题描述】:我试图通过OpenGL API
为这个application
类编译这个程序:
#include "sb7.h"
using namespace sb7;
class my_application : public application
public:
void startup()
render_program = compile_shaders();
glCreateVertexArrays(1, &vertex_array_object); // <--
glBindVertexArray(vertex_array_object);
void shutdown()
glDeleteProgram(render_program);
glDeleteVertexArrays(1, &vertex_array_object);
glDeleteProgram(render_program);
void render(double currentTime)
const GLfloat color[] = 0.0f, 2.0f, 0.0f, 1.0f ;
glClearBufferfv(GL_COLOR, 0, color);
glUseProgram(render_program);
glDrawArrays(GL_TRIANGLES, 0, 3);
private:
GLuint render_program;
GLuint vertex_array_object;
;
DECLARE_MAIN(my_application);
但是,我遇到了以下例外情况:
说startup()
函数中这行代码有问题:
void startup()
render_program = compile_shaders();
glCreateVertexArrays(1, &vertex_array_object); // <--
glBindVertexArray(vertex_array_object);
我尝试过使用glGenVertexArrays
,但还是没有编译成功。
【问题讨论】:
【参考方案1】:glCreateVertexArrays
是 OpenGL 4.5 中的一个函数。如果是NULL
,那很可能意味着您的程序中当前的 OpenGL 上下文不支持它。
你确定:
您拥有支持 OpenGL 4.5 的显卡 您的显卡是否有支持 OpenGL 4.5 的驱动程序 您正在使用的框架初始化 OpenGL 4.5 上下文?【讨论】:
谢谢!实际上 glGenVertexArrays 工作。此外,GLSL 程序应使用 400 版进行编译。以上是关于使用 glCreateVertexArrays 时的 OpenGL 异常的主要内容,如果未能解决你的问题,请参考以下文章
使用 php artisan migrate 时,迁移时更改表名,使用 tinker 保存对象时出错
使用前台服务时允许“使用应用程序时”而不是“始终允许”是不是可以?
使用自定义效果时缺少网格颜色,但使用 BasicEffect 时没有