gpt4 book ai didi

ios - iOS 上的着色器差异

转载 作者:可可西里 更新时间:2023-11-01 03:07:01 25 4
gpt4 key购买 nike

我正在通过这本书学习 3D 编程 Learning Modern 3D Graphics Programming ,但我对 iOS 中的着色器和 GLES 2.0 并不满意。我正在使用 xcode 4 opengl 游戏模板,尽管对本书中的第一个示例进行了更改。

本书中的第一个着色器将无法编译,但会出现许多不同的错误。第一个顶点着色器

#version 330

layout(location = 0) in vec4 position;
void main()
{
gl_Position = position;
}

提示版本声明并拒绝允许使用布局作为说明符。我终于设法让它建立起来。

attribute vec4 position;
void main()
{
gl_Position = position;
}

由于版本原因,第一个片段着色器再次拒绝构建,并且不允许在全局片段中输出

#version 330
out vec4 outputColor;
void main()
{
outputColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);
}

有错误

ERROR: 0:10: Invalid qualifiers 'out' in global variable context

好的,所以我设法获得了第一个示例(一个简单的三角形)以使用以下着色器。

顶点着色器

#version 100
void main()
{
gl_FragColor = vec4(1.0,1.0,1.0,1.0);
}

片段着色器

attribute vec4 position;
void main()
{
gl_Position = position;
}

所以这些都奏效了,我尝试了下一章中的第一个彩色示例。<​​/p>

#version 330
out vec4 outputColor;
void main() {
float lerpValue = gl_FragCoord.y / 500.0f;
outputColor = mix(vec4(1.0f, 1.0f, 1.0f, 1.0f),
vec4(0.2f, 0.2f, 0.2f, 1.0f), lerpValue);
}

即使解决了 eariler 中已修复的问题,版本中的 f 不允许 float ,着色器仍然拒绝构建并出现此错误

ERROR: 0:13: 'float' : declaration must include a precision qualifier for type

实际上它是在提示 float 。

我曾尝试通过谷歌搜索来找到对这些差异的解释,但都没有找到。我还通读了苹果文档以寻求建议,但没有找到任何帮助。我不确定还有什么地方可以看,或者我真正做错了什么。

最佳答案

在着色器的顶部添加:precision mediump float;

precision highp float;

取决于您的需求。

关于ios - iOS 上的着色器差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8788049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com