【问题标题】:gl_PointSize not working properly on Nvidia Shieldgl_PointSize 在 Nvidia Shield 上无法正常工作
【发布时间】:2015-09-22 17:22:55
【问题描述】:

我注意到我无法在我的 OpenGL ES 3.0 android 应用程序中使用 gl_PointSize 更改顶点着色器中点的大小。最终我发现我必须启用 GL_PROGRAM_POINT_SIZE 即使这个枚举值没有在 gl 头文件中定义。所以我最终添加了 glEnable(0x8642);

现在一切正常,但这是一个错误吗?或者我是否有理由需要启用它。我知道我需要在 Windows 的兼容性上下文中执行此操作,但我认为在 Android 上我将使用纯 ES 3.0 上下文。也许我的 GL 上下文设置不正确?

【问题讨论】:

    标签: android opengl-es android-ndk opengl-es-3.0


    【解决方案1】:

    这看起来像一个错误。在完全 OpenGL 中使用GL_PROGRAM_POINT_SIZE 启用的模式(默认禁用)在 OpenGL ES 中始终处于活动状态,并且无法关闭。

    我相信一些较新的 Shield 设备也支持完整的 OpenGL。我怀疑它们的底层驱动程序是共享的,并且在运行 ES API 时未调整此状态的设置。

    【讨论】:

    • 感谢您的评论!所以昨天我能够在另一台设备(HTC M8)上测试我的应用程序,我收到一个错误,暗示我没有 GLES 3 上下文。所以我检查了我的代码并将其与一些示例代码进行了比较,结果发现我在创建上下文时没有提供属性列表来指定我想要一个 ES 3 上下文。所以我认为盾牌只是默认为 ES 3 上下文,但在阅读了您的评论后,盾牌有一个完整的 OpenGL 实现并且默认为它是有道理的。感谢您的帮助!
    • 顺便说一下,我在去掉 glEnable(GL_PROGRAM_POINT_SIZE) 的情况下再次测试了它,现在粒子的大小是正确的。
    猜你喜欢
    • 1970-01-01
    • 2022-12-13
    • 1970-01-01
    • 2016-12-01
    • 2014-12-16
    • 2012-03-15
    • 1970-01-01
    • 2020-08-04
    • 2015-04-02
    相关资源
    最近更新 更多