调用函数后,程序将忽略所有内容

program ignores everything after function is called

本文关键字:函数 程序 调用      更新时间:2023-10-16

我甚至无法正确解释它。。所以我有类似的代码

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作为type,只接受GL_UNSIGNED_BYTEGL_UNSIGNED_SHORT

如果你在那次通话后检查了glGetError(),你应该会得到一个GL_INVALID_ENUM

尝试printf而不是printf_s(如果违反了它的任何约束,它将停止打印——这很可能是glDrawElements正在做的事情),并在每次打印后刷新stdout

glDrawElements(GL_TRIANGLES, model.IndCount, GL_UNSIGNED_INT, (void*)0);

崩溃,所以永远不会执行下一个语句。

给glDrawElements一个正确的第4个参数来修复崩溃。