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

1

22.02.2006, 22:01

GLU-Funktionen neu schreiben

Ich habe vor, die GLU aus meinem Projekt zu verbannen. Es gibt aber die eine oder andere sehr nützliche Funktion, z.B. gluUnProject,gluProject, und gluBuild2DMipMaps. Weiß jemand, wie man die codet?
Mein Projekt: Rise of the Sylvan

Anonymous

unregistriert

2

23.02.2006, 00:19

Hi!

Lade dir den Source der Mesa 3D Library herunter - dies ist eine OpenSource
Implementierung der OpenGL Schnittstelle und unter anderem auch der
glu-Funktionen. Dort kannst du dir direkt die Implementierung
herausnehmen.

Quelle: http://www.mesa3d.org/

Es lebe OpenSource! :top:

Grüße
Stefan

3

23.02.2006, 12:15

Ich habe mir jetzt mal die gluUnProject-Version von Mesa3D umgeschrieben, aber irgendwie funzt es net.

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
template <typename T>
Vector3 UnProject(const Matrix<T> &matModelView,
                          const Matrix<T> &matProj,
                          int * const pViewport)
        {
            Vector3 in=*this;

            /* Map x and y from window coordinates */
            in.x = (in.x - pViewport[0]) / pViewport[2];
            in.y = (in.y - pViewport[1]) / pViewport[3];

            /* Map to range -1 to 1 */
            in.x = in.x * 2 - 1;
            in.y = in.y * 2 - 1;
            in.z = in.z * 2 - 1;

            T w;
            Vector3 out=in.TransformCoords(Matrix<T>(matModelView*matProj).Inverted(),&w);
            out*=4.0f;
            if (w != 1 && w != 0)
            {
                out/=w;
            }
            
            return out;
        }
Mein Projekt: Rise of the Sylvan

Anonymous

unregistriert

4

23.02.2006, 12:19

Erklär bitte näher was nicht funktioniert...

- gibt es Compilerfehler? Welche?
- Funktioniert die Funktion nicht wie erwartet? Was ist anders als erwartet?
- Welche Schritte hast du bereits unternommen um das Problem näher einzugrenzen?

Grüße
Stefan

5

23.02.2006, 12:44

Der unprojizierte Punkt ist an der falschen Stelle. wenn ich zb auf der xz-Ebene ein Rechteck ziehen will (2*unprojizieren, einmal mit z=0 und einmal mit z=1 und dann Schnittpunkt Strahl - Ebene berechnen), ist das Rechteck an der falschen stelle und zu klein.
Bei gluUnProject funktionierts einwandfrei.
Mein Projekt: Rise of the Sylvan

Werbeanzeige