1

我正在努力开发一款仅使用程序生成的线条绘制的新 iOS 游戏。一切都运行良好,除了在绘制一些图元时出现了一些奇怪的问题。

我现在需要实现文本,并且字符被设置为数组中的一系列点。当我去绘制点(CGPoints)时,一些绘图模式很有趣。

    effect.transform.modelviewMatrix = matrix;
[effect prepareToDraw];
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, 0, 0, &points);
glDrawArrays(GL_POINTS, 0, ccc);

我正在使用此代码从数组中绘制,并且当模式设置为 GL_LINE_LOOP 或 GL_LINE_STRIP 时一切正常。但如果我将它设置为 GL_POINTS,我会收到 gpus_ReturnGuiltyForHardwareRestert 错误。如果我尝试 GL_LINES 它就不会画任何东西。

可能会发生什么?

4

1 回答 1

1

当你GL_POINTS在 ES2 或 ES3 中绘制时,你需要gl_PointSize在顶点着色器中指定,否则你会得到未定义的行为(最好是在设备上渲染丑陋,最糟糕的是你看到的崩溃)。顶点着色器GLKBaseEffect使用不做gl_PointSize,所以你不能使用它GL_POINTS。您需要实现自己的着色器。(作为起点,请尝试在创建新 Xcode 项目或使用 Xcode 帧调试器查看GLKBaseEffect生成的 GLSL 时获得的“OpenGL 游戏”模板中的模板。)

GL_LINES只要您glLineWidth()在客户端代码中设置适当的宽度,就应该可以正常工作。

于 2013-10-28T23:13:21.940 回答