0

私はこのコードを持っています、私は私が取り組んでいる私のエンジンのテストを使用しています。

My NVIDIA NVS 4200Mでは、期待どおりにGL_TRIANGLE_STRIPが表示されます。私のATIRadeon5800では、三角形を描画しているように見えます。

shader.begin();

    Matrix4<float> temp = getActiveCamera()->getProjectionMatrix() * getActiveCamera()->getObjectToWorld().fastInverse();

    glUniformMatrix4fv(shader["mvp"], 1, GL_TRUE, temp.getArray());

    glBegin(GL_TRIANGLE_STRIP);

        glVertexAttrib3f(shader["colour"],0,1,0);
        glVertexAttrib3f(shader["coord3d"],-.5,-.5,0); 

        glVertexAttrib3f(shader["colour"],1,1,0);
        glVertexAttrib3f(shader["coord3d"],0.5,-.5,0);

        glVertexAttrib3f(shader["colour"],1,0,1);
        glVertexAttrib3f(shader["coord3d"],-.5,.5,0); 

        glVertexAttrib3f(shader["colour"],0,1,1);
        glVertexAttrib3f(shader["coord3d"],.5,.5,0);

    glEnd();

shader.end();

これが私の2台のコンピューターで実際にどのように見えるかです。

https://www.dropbox.com/s/sgm2j978tx2ipnp/not%20working.png

https://www.dropbox.com/s/27idv0b8k0p4pcx/working.png

4

2 に答える 2

1

この問題は、上位の GLSL バージョンに移行することで修正できます。現在は 330 を使用しています。さらに、#version 330 の使用に切り替えて、すべての属性を「in」にし、さまざまな「out」を作成し、layout(location = #) を使用します。

于 2012-11-18T18:49:56.170 に答える
0

カメラの投影とモデル ビューの行列の値は? それらが標準のものである場合 (初期からの変更なし)、-z 軸を見下ろす必要があります。この場合、2 つの三角形の継ぎ目は (.5, -.5) から (-.5, .5) になります。 ) (右下から左上)。ATI カードの場合、これは当てはまりません (左下から右上に向かっています)。実際に三角形の背面​​を見ている場合、カードの OpenGL ドライバーが面をカリングしている可能性があります。これが本当なら、何も描かないと思いますが、わかりません。

このテストの 1 つは、glDisable(GL_CULL_FACE) を呼び出して、期待どおりに描画されるかどうかを確認することです。

顔カリングに関する参考文献: http://www.khronos.org/opengles/documentation/opengles1_0/html/glCullFace.html

楽しむ、

于 2012-11-16T05:54:31.923 に答える