OpenGL C++ glut ile texture yükleme

3D ve 2D arasındaki zorluk seviyesinde fark yok ikiside aynı.Benim dediğim şey tek tek glvertex3() yazmak yerine VertexArray DrawElements() kullanman.Çok daha yüksek performans veriyor.Ama hangisini kullanacağın sana kalmış.Bence 3D'yi bırakma.Eğer 3D'yi öğrenirsen 2D çok kolay gelecek.

Benim ilk postta gönderdiğim OpenGL serisini izlemeni tavsiye ederim.
İçinde başka yerde bulamayacağın önemli bilgiler var.
Şimdi bu vertex array de sen sadece köşeleri mi giriyorsun? Mesela benim kodda 24 tane glvertex3 yazmak lazım seninkinden 8 tane nokta yazınca vertex array ile küp çizebiliyor musun?
O fonksiyonları kullanarak CS 1.6 daki dust2 haritasını 25 fps'le çizdiriyordu OpenGL.
Seninkinde kaç FPS veriyor?
 
Son düzenleme:
Ben index array kullanıyorum.Vertex arrayi index array ile çizdiriyorum.Bir vertex tekrar tekrar kullanabiliyorum.
Böyle bişey benim yaptığım.
C#:
float[] kup_vertex = new float[]
        {
            -1.0f,-1.0f,-1.0f, // 0
            -1.0f,1.0f,-1.0f,  // 1
             1.0f,1.0f,-1.0f,  // 2
             1.0f,-1.0f,-1.0f, // 3
             -1.0f,-1.0f,1.0f, // 4
            -1.0f,1.0f,1.0f,   // 5
             1.0f,1.0f,1.0f,   // 6
             1.0f,-1.0f,1.0f,  // 7
        };

        UInt32[] kup_vertex_indexleri = new UInt32[]
        {
            0,1,2,3, // Ön yüz
            4,5,6,7, // Arka yüz
            1,5,2,6, // Üst yüz
            0,3,7,4, // Alt Yüz
            0,1,5,4, // Sol yüz
            2,6,7,3  // Sağ Yüz
            // Indexleri tam doğru yazmamış olabilirim
        };

        protected override void OnRenderFrame(FrameEventArgs e)
        {
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

            GL.Begin(PrimitiveType.Quads);
            for (int i = 0; i < kup_vertex_indexleri.Length - 1; i += 3)
            {
                GL.Vertex3(kup_vertex[(int)kup_vertex_indexleri[i]], kup_vertex[kup_vertex[(int)kup_vertex_indexleri[i + 1]], kup_vertex[kup_vertex[(int)kup_vertex_indexleri[i + 2]]);
            }
            GL.End();
            SwapBuffers();

        }
 
Ben index array kullanıyorum.Vertex arrayi index array ile çizdiriyorum.Bir vertex tekrar tekrar kullanabiliyorum.
Böyle bişey benim yaptığım.
C#:
float[] kup_vertex = new float[]
        {
            -1.0f,-1.0f,-1.0f, // 0
            -1.0f,1.0f,-1.0f,  // 1
             1.0f,1.0f,-1.0f,  // 2
             1.0f,-1.0f,-1.0f, // 3
             -1.0f,-1.0f,1.0f, // 4
            -1.0f,1.0f,1.0f,   // 5
             1.0f,1.0f,1.0f,   // 6
             1.0f,-1.0f,1.0f,  // 7
        };

        UInt32[] kup_vertex_indexleri = new UInt32[]
        {
            0,1,2,3, // Ön yüz
            4,5,6,7, // Arka yüz
            1,5,2,6, // Üst yüz
            0,3,7,4, // Alt Yüz
            0,1,5,4, // Sol yüz
            2,6,7,3  // Sağ Yüz
            // Indexleri tam doğru yazmamış olabilirim
        };

        protected override void OnRenderFrame(FrameEventArgs e)
        {
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

            GL.Begin(PrimitiveType.Quads);
            for (int i = 0; i < kup_vertex_indexleri.Length - 1; i += 3)
            {
                GL.Vertex3(kup_vertex[(int)kup_vertex_indexleri[i]], kup_vertex[kup_vertex[(int)kup_vertex_indexleri[i + 1]], kup_vertex[kup_vertex[(int)kup_vertex_indexleri[i + 2]]);
            }
            GL.End();
            SwapBuffers();

        }
Tamam anladım deneyeceğim
 

Yeni konular

Geri
Yukarı