Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

19.07.2012, 19:30

Btw: Macht es Performance-Unterschiede wenn ich keinen Index-Buffer benutzte?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

12

19.07.2012, 19:31

Am schnellsten sind Triangle Strips. Da brauchst du nur 4 Vertizes und keine Indizes.

13

19.07.2012, 19:33

Okey, danke. :)

MfG
Delop

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

19.07.2012, 19:36

Btw: Macht es Performance-Unterschiede wenn ich keinen Index-Buffer benutzte?

Hängt davon ab, was du renderst. Ein einzelnes Quad zeichnest du aber tatsächlich am besten als Triangle Strip aus 4 Vertices. Ein allgemeines zusammenhängendes Mesh zeichnest du am besten als Triangle List mit Index Buffer.

15

19.07.2012, 19:46

Danke dot. :)

Ich habe es jetzt mit Triangle Strip probiert, jedoch fehlt wieder ein Teil vom Bild. Ein Dreieck fehlt links.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        // Vertex
        
        static const GLfloat vertex[] = {
            myPos.x         , myPos.y           , 0.f,
            myPos.x + mySize.x, myPos.y         , 0.f,
            myPos.x + mySize.x, myPos.y + mySize.y, 0.f,
            myPos.x         , myPos.y + mySize.y, 0.f,
        };
        
        // UVs
        
        static const GLfloat uvs[] = {
            0.0, 0.0,
            1.0, 0.0,
            1.0, 1.0,
            0.0, 1.0,
        };


C-/C++-Quelltext

1
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);


Wie mache ich es so, dass ich alles sehe ohne Index-Buffer und mit Triangle Strips?

MfG
Delop

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

16

19.07.2012, 19:53

Hier gerade gefunden:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
void generateBuffer(float x0, float y0, float x1, float y1){
            // Vertices
            m_vertices.resize(8);

            m_vertices[0] = 0;
            m_vertices[1] = 0;

            m_vertices[2] = m_size.x;
            m_vertices[3] = 0;

            m_vertices[4] = m_size.x;
            m_vertices[5] = m_size.y;

            m_vertices[6] = 0;
            m_vertices[7] = m_size.y;

            // Texturkoordinaten
            m_texCoords.resize(8);

            m_texCoords[0] = x0;
            m_texCoords[1] = y0;

            m_texCoords[2] = x1;
            m_texCoords[3] = y0;

            m_texCoords[4] = x1;
            m_texCoords[5] = y1;

            m_texCoords[6] = x0;
            m_texCoords[7] = y1;

            // Indices
            m_indices.resize(6);

            m_indices[0] = 0;
            m_indices[1] = 1;
            m_indices[2] = 3;

            m_indices[3] = 1;
            m_indices[4] = 2;
            m_indices[5] = 3;

            // Buffer
            glGenBuffers(1, &m_vertexBuffer);
            glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
            glBufferData(GL_ARRAY_BUFFER, sizeof(float)*m_vertices.size(), &m_vertices[0], GL_STATIC_DRAW);
            
            glGenBuffers(1, &m_texCoordBuffer);
            glBindBuffer(GL_ARRAY_BUFFER, m_texCoordBuffer);
            glBufferData(GL_ARRAY_BUFFER, sizeof(float)*m_texCoords.size(), &m_texCoords[0], GL_STATIC_DRAW);
        }


Ohne Indices musst du halt 2 Vertices kopieren so das 2 ganze Dreiecke entstehen.

17

19.07.2012, 19:56

Die Lösung hatte ich schon, so dass 2 Dreiecke entstehen. Aber ich suche eine mit Triangle Strip.

MfG
Delop

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

18

19.07.2012, 19:58

Du musst die Eckpunkte in einer anderen Reihenfolge anordnen.
Informier dich mal, wie Triangle Strips funktionieren, dann wirst du es schon rausfinden ;)
Denk dran, dass es Backface Culling gibt.

19

19.07.2012, 20:05

Danke an alle. Hab's jetzt hin bekommen. :)

MfG
Delop

Werbeanzeige