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

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

12.06.2010, 13:08

OpenGL mit RHW wie in Direct3D9

Hi,
gestern habe ich endlich verstanden wie das mit dem RHW (Reciprocal Homogeneus W) in Direct3D9 funktioniert und in OpenGL mal einen kleinen Versuch gemacht :D
Hier, schaut euch das mal an (den OpenGL Code drumherum müsst ihr euch halt selbst zusammen kramen):

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
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
    glViewport(0, 0, 640, 480);
    
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glScalef(1.0 / (640/2), 1.0 / (-480/2), 1);
    glTranslatef(-640/2, -480/2, 0);
    
    glDisable(GL_CULL_FACE);
    glDisable(GL_DEPTH_TEST);
    glDisable(GL_LIGHTING);
    glDisable(GL_FOG);
    
    static float deg;
    deg += 2.5f;
    float s = 1.0f / (sin(deg*M_PI/180)*9.9 + 10.0f);
    
    glBegin(GL_TRIANGLES);
    {
        glColor3ub(255, 0, 0);
        glVertex4f(320.0f*s, 50.0f*s, 0.0f, s);
        glColor3ub(0, 255, 0);
        glVertex4f(520.0f, 400.0f, 0.0f, 1.0f);
        glColor3ub(0, 0, 255);
        glVertex4f(120.0f, 400.0f, 0.0f, 1.0f);
    }
    glEnd();

2

12.06.2010, 13:15

Danke, sehr interessant!
stɪl traɪ tuː θɪŋk ˈpɒzətɪv

unsigned long

Treue Seele

Beiträge: 140

Wohnort: Herzogenrath

Beruf: Fachinformatiker Fachrichtung Anwendungsentwicklung

  • Private Nachricht senden

3

13.06.2010, 19:34

Interessanter Weg. Was mich jedoch interessiert ist, welchen Vorteil das gegen die "normale" orthogonale Projektion hat? In Direct3D ist es z. B. mit RHW-Vertices nicht zu transformieren - was sehr langsam ist für 2D Games.
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.'
[ bing | not'a'tric | germangamedev | Fragen richtig stellen ]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

13.06.2010, 19:41

Nachdem er mit glBegin()/glEnd() arbeitet dürfte die Performance hier wohl sowieso kein Kriterium sein ;)

5

14.06.2010, 12:01

Ist das nicht eine normale orthogonale Projektion? Ist ja nicht so, dass die beiden Matrizen von Ogl jetzt nicht mehr benutzt werden.

Ich hätte zwar vielleicht eher die Projektionsmatrix geändert, statt die Modelviewmatrix, aber wenn man den Matrixstack benutzt ist das wohl letztendlich relativ egal, man hat eben eine Reihe von Matrizen die nacheinander auf Vektoren angewand werden, welche davon mal wie hieß ist ja egal.
Lieber dumm fragen, als dumm bleiben!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

14.06.2010, 14:28

Hm jo, ich finds jetzt auch nich so wahnsinnig spannend. Möglich das ich den Witz bei der Sache aber auch einfach übersehe! ;)
@D13_Dreinig

Werbeanzeige