OStack程序员社区-中国程序员成长平台

标题: ios opengl 3.0 不编译版本 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 04:37
标题: ios opengl 3.0 不编译版本

我正在 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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4