gpt4 book ai didi

c++ - SDL2 With OpenGL ES 2.0 - 无法在 iOS 上绘制简单的三角形

转载 作者:行者123 更新时间:2023-11-28 00:27:14 24 4
gpt4 key购买 nike

我正在使用 SDL2 来测试 OpenGL ES 2.0,但出于某种原因我无法在屏幕上绘制任何内容。我正确配置了我的着色器,它正确编译并被顶点属性绑定(bind),但仍然没有。如果我为 MacOSX 或 Windows 编译应用程序,三角形会绘制。

这是我的着色器:

[顶点着色器]

attribute vec3 vPosition;

void main() {
gl_Position = vec4(vPosition.xyz, 1.0);
}

[片段着色器]

precision mediump float;

varying vec4 _color;

void main() {
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}

另请注意,在链接着色器之前,我将其称为:

glBindAttribLocation(programObj, 0, "vPosition");

[绘图代码]

glUseProgram(programObj);

GLfloat vVertices[] = {0.0f, 0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f};

glViewport(0, 0, 320, 480);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

// Load the vertex data
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vVertices);
glEnableVertexAttribArray(0);
glDrawArrays(GL_TRIANGLES, 0, 3);

SDL_GL_SwapWindow(window);

正如我之前提到的,这在 MacOSX 或 Windows 上运行良好,但是当我为 iOS 编译它时,什么也没有绘制。谁能指出我做错了什么?

最佳答案

这可能意味着您的初始化代码不完整。为确保一切都已初始化,您可以创建 SDL 渲染器,它将初始化所有必要的东西。创建后您不必将其用于绘图。

SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, 0);

如果您觉得此解决方案太肮脏和骇人听闻,您可以检查 SDL_CreateRenderer 的源代码并向您的代码中添加缺失的部分。

我在将 OpenGL 游戏移植到 iOS 时遇到了同样的问题,创建渲染器解决了这个问题。

关于c++ - SDL2 With OpenGL ES 2.0 - 无法在 iOS 上绘制简单的三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24392319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com