我什至无法正确解释它..所以我有类似的代码
printf_s("%s", "1");
glDrawElements(GL_TRIANGLES, model.IndCount, GL_UNSIGNED_INT, (void*)0);
printf_s("%s", "2");
eglSwapBuffers ( esContext->eglDisplay, esContext->eglSurface);
并且 2 从未打印过。当我删除 glDrawElements 时一切正常
我什至无法正确解释它..所以我有类似的代码
printf_s("%s", "1");
glDrawElements(GL_TRIANGLES, model.IndCount, GL_UNSIGNED_INT, (void*)0);
printf_s("%s", "2");
eglSwapBuffers ( esContext->eglDisplay, esContext->eglSurface);
并且 2 从未打印过。当我删除 glDrawElements 时一切正常
glDrawElements(GL_TRIANGLES, model.IndCount, GL_UNSIGNED_INT, (void*)0);
^^^^^^^^^^^^^^^ whaaaaat?
OpenGL ES'glDrawElements()
不接受GL_UNSIGNED_INT
for type
,只是GL_UNSIGNED_BYTE
或GL_UNSIGNED_SHORT
。
如果你glGetError()
在那个电话之后检查,你应该得到一个GL_INVALID_ENUM
.
尝试printf
代替printf_s
(如果违反任何约束,它将停止打印 - 这很可能是正在做的事情)并在每次打印后glDrawElements
刷新。stdout
glDrawElements(GL_TRIANGLES, model.IndCount, GL_UNSIGNED_INT, (void*)0);
崩溃,因此永远不会执行下一个语句。
给 glDrawElements 一个正确的第四个参数来修复你的崩溃。