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

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

11

10.02.2011, 22:43

Drei für ein Dreieck? aber auch wenn ich 0, 0.5, 1 oder 0, 1, 0.5 oder sonst was schreibe wird es nicht auf beiden angezeigt. Mit 2 oder 4 Koordinaten hab ich es auchschon ausprobiert. Oder muss ich Tatsächlich PUNKTE angeben, statt Ecken?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

10.02.2011, 22:46

Ich hab den Eindruck dir ist nicht so wirklich klar was Texturkoordinaten sind also empfehle ich dass du dir anschaust was Texturkoordinaten sind bevor du noch weiter einfach rumprobierst.

Genaueres findest du im entsprechenden Buch oder Tutorial deiner Wahl oder z.B. hier (im Abschnitt "Texture sampling and texture parameters" weiter unten).

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

13

10.02.2011, 22:57

Werd ich tun...

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

14

11.02.2011, 13:13

Geht Doch

Ok ich habe meine Dummheit überwunden :D war wahrscheinlich schon zu spät.


(Link)


Eine Kleinigkeit:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Ganz viele Koordinaten :)

                for(int i = 0; i < 8; i++){
                    m_texCoords.push_back(0);
                    m_texCoords.push_back(0);
                    m_texCoords.push_back(0);
                    m_texCoords.push_back(0);
                    m_texCoords.push_back(1);
                    m_texCoords.push_back(1);

                    m_texCoords.push_back(0);
                    m_texCoords.push_back(0);
                    m_texCoords.push_back(1);
                    m_texCoords.push_back(1);
                    m_texCoords.push_back(1);
                    m_texCoords.push_back(1);
                }


geht das kürzer?

[EDIT]

Mist hat doch noch nicht geklappt -.- die Textur wird jetzt so lang gezogen...

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »DeKugelschieber« (11.02.2011, 16:11)


DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

15

11.02.2011, 16:11

Sorry, aber es gibt wohl sachen die will man einfach nicht verstehen... Bitte, nur an diesem einfachem Beispiel, wie muss ich die Texturkoordinaten setzen?

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
GLuint textures[1];                                         // Texturen
GLuint vBuffer, tBuffer;                                    // VBO Buffer

void createOutput(){
    // Textur
    glGenTextures(1, textures);
    loadTexture("textures/textur.tga"); 

    // Vertex
    float vertex[] = {0, 0, 0,  2, 0, 0,    2, 0, 2,
                      0, 0, 0,  2, 0, 2,    0, 0, 2};

    glGenBuffers(1, &vBuffer);
    
    glBindBuffer(GL_ARRAY_BUFFER, vBuffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertex), &vertex, GL_STATIC_DRAW);

    // Texturkoordinaten
    float texCoords[] = {0, 0,  1, 0,   1, 1,   0, 1,
                         0, 0,  1, 1,   1, 1,   0, 0};

    glGenBuffers(1, &tBuffer);
    
    glBindBuffer(GL_ARRAY_BUFFER, tBuffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(texCoords), &texCoords, GL_STATIC_DRAW);
}

void draw(){ 
    glBindTexture(GL_TEXTURE_2D, textures[0]); // Textur

    glBindBuffer(GL_ARRAY_BUFFER, vBuffer); // Vertex
    glVertexPointer(3, GL_FLOAT, 0, 0);

    glBindBuffer(GL_ARRAY_BUFFER, tBuffer); // Texturkoordinaten
    glTexCoordPointer(2, GL_FLOAT, 0, 0);
            
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);

    glDrawArrays(GL_TRIANGLES, 0, 6); // Ausgabe

    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}


Texturparameter sind:

C-/C++-Quelltext

1
2
3
4
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);


Ausgabe:


(Link)


[EDIT]

Toll -.-, muss ich die Grafik nochmal drehen?

C-/C++-Quelltext

1
2
3
4
5
6
float texCoords[] = {1, 1,  0, 1,   0, 0,
                         0, 1,  1, 0,   0, 0};

//...

glTexCoordPointer(2, GL_FLOAT, 0, 0);



(Link)

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »DeKugelschieber« (11.02.2011, 16:43)


DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

16

13.02.2011, 00:22

So habs geschafft, ihr (du, dot) müsst mir verzeihen, ich hatte da ein kleines Missverständnis mit meinem Buch ^^ naja, so siehts jetzt aus:

Code

Werbeanzeige