java - LWJGL glVertexAttribPointer索引切换

标签 java lwjgl

当我通过 LWJGL 学习 OpenGL 时,我一直在浏览 LWJGL wiki 上的教程。具体来说,this one .

我的问题是,尽管我重复了该代码,调用调用,函数调用函数,两个顶点属性指针需要切换(因此代码如下所示:

GL20.glVertexAttribPointer(1, 4, GL11.GL_FLOAT, false, Vertex.sizeInBytes, 
    // Put the colors in attribute list 1
GL20.glVertexAttribPointer(0, 4, GL11.GL_FLOAT, false, Vertex.sizeInBytes,
    Vertex.elementBytes * 4);

将其切换为位置索引为 1,颜色索引为 0,如预期的那样,可以生成漂亮的渐变渲染。但是,如果我在切换索引的情况下运行它(我认为它应该工作的方式,我会得到:

Confusing insanity

显然,在研究这个渲染一段时间后,位置和颜色数据已经被切换,因此,切换索引号完全解决了问题,但我很确定我已经正确地遵循了所有内容。代码有什么问题吗?怎么就这么 SCSS 了?

最佳答案

您不应该像这样对属性 ID 进行硬编码,而只是希望它们最终链接到正确的着色器属性。

您需要使用 glBindAttribLocation(在 glLinkProgram 之前)或 glGetAttribLocation,以便可以将着色器变量映射到其 ID 号。

关于java - LWJGL glVertexAttribPointer索引切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13186922/

相关文章:

java - Shiro 自定义 JDBC 领域

java - 将 securesocial 模块添加到 play 2.2.1 项目

java - 如果监视器作为值存储在 HashMap 中并被 null 替换,会发生什么情况

java - URI.create() 与新 URI()

java - LWJGL OpenGL黑屏

opengl - 如何在OpenGL中实现没有重复顶点的平面着色?

java - 我如何在虚幻引擎 4 中使用 Java

java - 在 web.xml 中加载启动标记

java - GLSL 结构统一位置返回 -1

java - LWJGL 多重纹理不起作用