• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios opengl 3.0 不编译版本

[复制链接]
菜鸟教程小白 发表于 2022-12-13 04:37:09 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在 xcode 5 中试用 opengl 3.0

这就是我编译着色器的方式

*shader = glCreateShader(type);
glShaderSource(*shader, 1, &source, NULL);
glCompileShader(*shader);

这是我的着色器

#version 140
attribute vec4 position; 
attribute vec4 color;

varying vec4 colorVarying;

attribute vec2 TexCoordIn;
varying vec2 TexCoordOut;
out int rowIndex;
out int colIndex;

void main(void) { 
    colorVarying = color;
    gl_Position = position;
    TexCoordOut = TexCoordIn;
}

我试试:

glGetString(GL_SHADING_LANGUAGE_VERSION);

返回 235,这是预期的。但我明白了

ERROR: 0:1: '' :  version '140' is not supported

从编译日志中,我尝试了很多版本号,只有 100 个有效。然后我得到

Invalid qualifiers 'out' in global variable context

怎么了?我在 iphone 4 64 位模拟器上运行它,在我的 mac air 上使用 Intel HD Graphics 3000 384 MB 显卡



Best Answer-推荐答案


我对你想要做什么感到困惑。你说你想使用 OpenGL 3.0,但你已经标记了 OpenGL ES 3.0 的问题。由于您在谈论 iPhone 模拟器,我假设您想使用 OpenGL ES 3.0。您应该注意,在 Apple 移动设备上,只有 iPhone 5S 具有支持 OpenGL ES 3.0 的 GPU。我不知道 ES 3.0 在模拟器中的效果如何——如果有这样的东西可用的话,至少你应该试试 iPhone 5S 模拟器。

至于你的着色器,它看起来像是不同语言版本的混合。首先,对于 OpenGL ES 3.0,您需要 #version 300 es。 OpenGL ES 中唯一允许的其他版本是 ES 2.0 的 #version 100。我不知道您为什么要尝试 #version 140,因为它仅适用于(桌面)OpenGL 3.1。我不知道你为什么期待并从 GL_SHADING_LANGUAGE_VERSION 获得 235?根据规范,它应该返回 OpenGL ES GLSL ES N.M ...,其中 N 是主要语言版本号,M 是次要语言版本号。

然后,如 SurvivalMachine 所述,您需要将 variing 替换为 out 并将 attribute 替换为 in.

关于ios opengl 3.0 不编译版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19337332/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap