IOS OpenGL 3.0的不编译版本
问题描述:
我在Xcode 5IOS OpenGL 3.0的不编译版本
尝试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
怎么了?我与英特尔高清显卡3000个384 MB显卡
答
我很困惑你想要做什么对iPhone 4的64位模拟器中运行这个,在我的Mac空气。你说你想使用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指出的,你需要用in
和out
attribute
s到取代你varying
秒。
AFAIK Mac上的图形适配器几乎没有任何作用,因为Apple在模拟器内实现了一个模拟设备(纯软件)的GL/ES硬件的抽象层 - 换句话说,GL/ES调用不要直接访问Mac的设备驱动程序。 – Till
您是否尝试过_#版本300 es_与标签:APIWinHTTP和_varying_与_out_更换_attribute_? – SurvivalMachine
@换句话说,我必须在设备本身上尝试它? – tzl