1

我已经生成了多个使用一个程序(即一个顶点着色器和一个片段着色器)正确绘制的对象,它们都在相同的上下文中运行。我现在想添加另一个对象,并且想将它与不同的程序一起使用。

因此,调用glActiveTexture()glBindTexture()glBindBuffer()glBufferData()glEnableVertexAttribArray()glVertexAttribPointer()一些统一命令之前,我glUseProgram()使用适当的程序 ID 进行调用。

结果是当两种对象都被绘制时,什么都没有被绘制。如果我停用与第一个程序一起使用的对象,则会正确绘制新对象,反之亦然。

切换程序时要记住哪些事项。

谢谢。

编辑:当我进一步调查时,我注意到抛出了一个我忽略的 OpenGL 错误,因为它被消耗而不是打印(grrr)。事实证明,这根本不是 OpenGL 错误,而是 ruby​​motion 问题。(起初没想到。)Rubymotion 垃圾收集了我的 OpenGL 程序,因为我在本地分配了它,后来才通过glUseProgram(GLuint x). 所以我只是在 ruby​​ 中使程序全局化,现在所有程序都可以正常工作。不过,感谢您的评论。你不可能知道,我的错,sry。

4

0 回答 0