菜鸟教程小白 发表于 2022-12-13 04:37:09

ios opengl 3.0 不编译版本


                                            <p><p>我正在 xcode 5 中试用 opengl 3.0</p>

<p>这就是我编译着色器的方式</p>

<pre><code>*shader = glCreateShader(type);
glShaderSource(*shader, 1, &amp;source, NULL);
glCompileShader(*shader);
</code></pre>

<p>这是我的着色器</p>

<pre><code>#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;
}
</code></pre>

<p>我试试:</p>

<pre><code>glGetString(GL_SHADING_LANGUAGE_VERSION);
</code></pre>

<p>返回 235,这是预期的。但我明白了</p>

<pre><code>ERROR: 0:1: &#39;&#39; :version &#39;140&#39; is not supported
</code></pre>

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

<pre><code>Invalid qualifiers &#39;out&#39; in global variable context
</code></pre>

<p>怎么了?我在 iphone 4 64 位模拟器上运行它,在我的 mac air 上使用 Intel HD Graphics 3000 384 MB 显卡</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我对你想要做什么感到困惑。你说你想使用 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 模拟器。</p>

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

<p>然后,如 SurvivalMachine 所述,您需要将 <code>variing</code> 替换为 <code>out</code> 并将 <code>attribute</code> 替换为 <code>in</code>.</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios opengl 3.0 不编译版本,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19337332/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19337332/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios opengl 3.0 不编译版本