【问题标题】:OpenGL 3.0 glVertexAttribPointer: legacy works, forward compatible (core) doesn’tOpenGL 3.0 glVertexAttribPointer:遗留工作,向前兼容(核心)不
【发布时间】:2016-09-01 23:53:30
【问题描述】:

此代码在旧版 OpenGL 3.0 中运行良好,但在前向兼容模式下失败(我的设置为 4.1 和 3.3)。我已经在硬件和软件实现上对其进行了测试。我使用 SDL 来获取 OpenGL 上下文,并使用 GLEW 来查找一些函数。将下面的行添加到我的代码中会导致问题。

SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG);

代码的问题部分是调用 glVertexAttribPointer

glBindBuffer(GL_ARRAY_BUFFER, glb.vbo);
glBufferData(
    GL_ARRAY_BUFFER,
    size * sizeof(GLfloat),
    input,
    GL_DYNAMIC_DRAW
);
test_gl_errors(); /* GL_NO_ERROR */

glUseProgram(glb.program);
glEnableVertexAttribArray(glb.vert_array);
glEnableVertexAttribArray(glb.colour_array); /* I use this later. */

test_gl_errors(); /* GL_NO_ERROR */
glVertexAttribPointer(
    glb.vert_array,
    2,
    GL_FLOAT,
    GL_FALSE,
    5 * sizeof(GLfloat),
    0
);
test_gl_errors(); /* GL_INVALID_OPERATION */

我想添加更多代码,但是有很多东西。从下面的链接中阅读信息对我没有帮助。有什么建议吗?
https://www.opengl.org/sdk/docs/man/html/glVertexAttribPointer.xhtml

我的 OpenGL 设置:

  • AMD CAPE VERDE 上的镓 0.4(DRM 2.45.0 / 4.7.2-1-ck,LLVM 3.8.1)
  • llvmpipe 上的镓 0.4(LLVM 3.8,128 位)
  • Mesa3D:12.0.1

【问题讨论】:

  • 您拨打电话时是否绑定了VAO?它们在核心配置文件中是必需的。
  • @RetoKoradi 我添加了更多代码。
  • 我仍然没有看到 VAO。在此之前的某处必须有glGenVertexArray()glBindVertexArray() 调用。
  • 坦克你。我已经添加了这两个函数,它可以工作。
  • @RetoKoradi 您想将此作为答案发布吗?

标签: c sdl-2 glew opengl-3


【解决方案1】:

工作代码,基于 Reto Koradi 的 cmets。

glBindVertexArray(GL_ARRAY_BUFFER, glb.vao); /* <-- NEW !!! */
glBindBuffer(GL_ARRAY_BUFFER, glb.vbo);
glBufferData(
    GL_ARRAY_BUFFER,
    size * sizeof(GLfloat),
    input,
    GL_DYNAMIC_DRAW
);

glUseProgram(glb.program);
glEnableVertexAttribArray(glb.vert_array);

glVertexAttribPointer(
    glb.vert_array,
    2,
    GL_FLOAT,
    GL_FALSE,
    5 * sizeof(GLfloat),
    0
);
test_gl_errors(); /* GL_NO_ERROR */

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 2017-12-18
    • 2020-07-03
    • 2013-10-09
    • 2017-01-23
    • 1970-01-01
    相关资源
    最近更新 更多