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

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

27.05.2012, 12:52

Super, jetzt ist der Strich wenigstens nicht mehr grau! ;) Wenn du alles um die textur schwarz haben willst solltest du CLAMP_TO_BORDER mit schwarzer Bordercolor nutzen.
@D13_Dreinig

12

27.05.2012, 12:54

@David_pb: Danke :)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

13

27.05.2012, 13:17

Vor allen Dingen solltest du korrekte Texturkoordinaten benutzen, sonst bekommst du später noch viele andere Probleme.

14

27.05.2012, 13:19

@David: was meinst du mit "korrekte" Texturkoordinaten? Meinst du "2-Zahlen" oder ob ich die richtig einlese? Ich hab beides beachtet (512 x 512)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

15

27.05.2012, 13:49

Deine Texturkoordinaten gehen aus der Textur heraus, genau darum hast du das Problem.
Auch jetzt hast du das Problem noch - du siehst es nur nicht mehr (bis du noch mehr Objekte zeichnest, dann wirst du es sehen).

Texturkoordinaten beziehen sich auf die Textur.
Du hast die Texturkoordinaten genau so behandelt wie Pixelkoordinaten im Bild, sie sind aber etwas ganz anderes.

Der linke untere Eckpunkt sollte Texturkoordinaten (0, 0) haben.
Der linke obere (0, 1).
Der rechte obere (1, 1).
Der rechte untere (1, 0).

Das ist unabhängig davon, wie groß dein Objekt auf dem Bildschirm sein soll.

16

27.05.2012, 13:56

Danke David ich hab's verstanden! :)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
        glTexCoord2f(0.0            , 0.0               );
        glVertex2f  (myPos.x        , myPos.y           );
        
        glTexCoord2f(1.0            , 0.0               );
        glVertex2f  (myPos.x + myWidth, myPos.y         );
        
        glTexCoord2f(1.0            , 1.0               );
        glVertex2f  (myPos.x + myWidth, myPos.y + myHeight);
        
        glTexCoord2f(0.0            , 1.0               );
        glVertex2f  (myPos.x        , myPos.y + myHeight);


Jedoch nur ein schwarzer Kasten erscheint. :/

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

17

27.05.2012, 14:07

Hast du irgendwo noch eine Texturmatrix gesetzt?
Wenn ja, schmeiß sie raus. Die brauchst du gar nicht.

18

27.05.2012, 14:57

Hab die Texturenmatrix gelöscht und es gibt keinen Unterschied: Die Textur ist komplett schwarz und endet nie o.O

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

19

27.05.2012, 15:05

Zitat

Ich finde es nicht normal, weil in quasi allen anderen Standards oder Libraries die 2D-Bitmap-Koordinaten

Natürlich ist es nicht normal.
Der Grund für die Fehldarstellung ist aber nicht OpenGL mit seinen nicht "normalen" Texturkoordinaten sondern der Bitmaploader.
Den die Bilddaten in Bmps beginnen mit der letzen Zeile und enden mit der ersten.

20

27.05.2012, 19:43

Habs geschafft :D. Danke an das Forum, besonders an David und David_pb :)

Move-Funktion:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
double X = myPos.x;
        double Y = myPos.y;
        
        glBegin(GL_QUADS);
        
        glTexCoord2f (0.0, 0.0);
        glVertex2f (X, Y);
        
        glTexCoord2f (1.0, 0.0);
        glVertex2f (X + 1.0, Y);
        
        glTexCoord2f (1.0, 1.0);
        glVertex2f (X + 1.0, Y + 1.0);
        
        glTexCoord2f (0.0, 1.0);
        glVertex2f  (X, Y + 1.0);
        
        glEnd();

Werbeanzeige