rob*_*era 4 opengl-es objective-c ios opengl-es-2.0
我目前正在为iPad制作一个OpenGL ES 2.0绘图应用程序,并且我不断收到有关着色器的以下警告:
检查依赖项
[WARN]警告:没有规则处理架构i386类型sourcecode.glsl的'$(PROJECT_DIR)/ IdeaStorm/Drawing Engine/Shaders/Shader.fsh'文件
[WARN]警告:没有规则处理架构i386类型sourcecode.glsl的'$(PROJECT_DIR)/ IdeaStorm/Drawing Engine/Shaders/Shader.vsh'文件
我的绘图应用程序目前在iOS 2的第二代iPad上正常运行,除了这个错误,并且在模拟器中运行也很好.
然而,有一天,我尝试在我的朋友第一代iPad上使用iOS 4.3运行它,并且着色器无法编译.
任何人都可以指出我的正确方向是关于这个警告和着色器为第一代iPad编译的失败?
Bra*_*son 10
默认情况下,当您向项目添加顶点和片段着色器时,Xcode会错误地将它们视为要编译的源文件而不是要捆绑的资源.这会导致您看到的上述错误.
从项目目标的Compile Sources构建阶段中删除Shader.fsh和Shader.vsh文件,并确保它们存在于Copy Bundle Resources阶段.
您的着色器在iPad 2上成功编译(在运行时,我认为),但在原始iPad上没有成功,这有点奇怪.虽然iPad 2具有比iPad 1更明显的着色能力,但是当它在另一个上工作时,应该没有太多会导致着色器失败.您可以尝试使用以下代码(在着色器编译过程中)注销任何着色器编译失败:
glGetShaderiv(*shader, GL_COMPILE_STATUS, &status);
if (status != GL_TRUE)
{
GLint logLength;
glGetShaderiv(*shader, GL_INFO_LOG_LENGTH, &logLength);
if (logLength > 0)
{
GLchar *log = (GLchar *)malloc(logLength);
glGetShaderInfoLog(*shader, logLength, &logLength, log);
NSLog(@"Shader compile log:\n%s", log);
free(log);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1728 次 |
| 最近记录: |