我尝试在arm64-v8a手机上构建基准测试OpenGL的简单命令行应用程序。 glCreateProgram也返回0和glGetError,这似乎是不正确的,因为如果glCreateProgram不返回正整数(至少根据https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glCreateProgram.xhtml),则必须发生一些错误。
也许我的初始化不正确吗?
bool init() {
EGLDisplay display(eglGetDisplay(EGL_DEFAULT_DISPLAY));
bool is_initialized;
if (!eglInitialize(display, nullptr, nullptr)) {
return false;
}
check_err();
static const EGLint attributes[] = {EGL_CONTEXT_CLIENT_VERSION, 3, EGL_NONE};
EGLContext context(eglCreateContext(display, EGL_NO_CONTEXT, EGL_NO_CONTEXT, attributes));
if (auto error = glGetError()) {
std::cout << error << endl;
return false;
}
// eglBindApi();
return true;
}
int main() {
if (!init()) {
cout << "init error" << endl;
return 1;
}
program = glCreateProgram();
cout << program << " " << glGetError() << endl;
}
答案 0 :(得分:0)
您正在调用glGetError()
以测试EGL函数的错误状态。您想改用eglGetError()
; glGetError()
仅处理GL函数的错误状态。
答案 1 :(得分:0)
您忘记了致电eglMakeCurrent
。告诉OpenGL当您调用$comb['Amount'] = $arr2['Amount'];
函数时,哪个 context 和哪个 surfaces 受该函数影响是非常重要的。
要致电gl***
,您必须先create a surface,您也忘记了。
我建议您从示例代码(例如Hello Triangle / Cube)开始,然后修改代码以适合您的需求。