ios - GLKit 不绘制 GL_POINTS 或 GL_LINES

标签 ios opengl-es-2.0 glkit

我正在努力开发一款仅使用程序生成的线条绘制的新 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,它不会绘制任何东西。

可能发生了什么?

最佳答案

当你在 ES2 或 ES3 中使用 GL_POINTS 绘制时,你需要在顶点着色器中指定 gl_PointSize 否则你会得到未定义的行为(充其量在设备上呈现丑陋,最坏的情况是你看到的崩溃)。 GLKBaseEffect 使用的顶点着色器不执行 gl_PointSize,因此您不能将它与 GL_POINTS 一起使用。您需要实现自己的着色器。 (作为起点,尝试在创建新 Xcode 项目时获得的“OpenGL 游戏”模板中的模板,或使用 Xcode Frame Debugger 查看 GLKBaseEffect 生成的 GLSL。)

只要您在客户端代码中使用 glLineWidth() 设置适当的宽度,

GL_LINES 就应该可以正常工作。

关于ios - GLKit 不绘制 GL_POINTS 或 GL_LINES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19614939/

相关文章:

ios - 如何实现类似paper的book view flipping 53

graphics - 使用 glBindAttribLocation 会提高性能吗?

android - LibGDX:如何可靠地确定 opengl 上下文是否丢失?

ios - OpenGL ES 2/iOS GLKit 的设计建议

opengl-es - 有没有办法在 IOS4 应用程序中链接 GLKit?

android - Firebase 远程配置值的自定义验证逻辑?

ios - 在 Collection View 中访问 indexPath

iphone - UIImagePickerController 静止图像质量

ios - glkView :drawInRect: and glkViewControllerUpdate:? OpenGL ES 2 - iOS 之间的区别

javascript - UIWebview javascript 仅在发布版本中失败