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

16.08.2010, 15:36

Aktuelle Opengl Tutorials

Hi,
Ich suche gerade aktuelle Opengl Tutorials. Ich besitzte zwei Entwicklungsumgebungen Vc9.0 und Code::Blocks.
Ich habe mir die Tutorials von NeHe angeschaut und auch probiert, aber leider zeigt er mir hier bei Vc9.0 in der fünften Zeile einen Fehler an.

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
#include <iostream>
#include <windows.h> // Header Datei für Windows 
#include <gl\gl.h> // Header Datei für die OpenGL32 Library 
#include <gl\glu.h> // Header Datei für die GLu32 Library 
#include <gl\glaux.h> // Header Datei für die GLaux Library 

HGLRC hRC=NULL; // Permanenter Rendering Context 
HDC hDC=NULL; // Privater GDI Device Context 
HWND hWnd=NULL; // Enthält unser Fenster-Handle HINSTANCE hInstance; // Enthält die Instanz der Applikation 
bool keys[256]; // Array das für die Tastatur Routine verwendet wird
bool active=TRUE; // Fenster Aktiv Flag standardmäßig auf TRUE gesetzt bool 
fullscreen=TRUE; // Fullscreen Flag ist standardmäßig auf TRUE gesetzt 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // Deklaration für WndProc 


GLvoid ReSizeGLScene(GLsizei width, GLsizei height) 
// verändert die Größe und initialisiert das GL-Fenster 
if (height==0) // Verhindere eine Divison durch 0, indem die Höhe auf 1 gesetzt wird 
{
    height=1; 
}
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION); // wähle die Projektions-Matrix aus  
glLoadIdentity(); // Resette die Projektions-Matrix  
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);  // berechne das Seitenverhältnis des Fensters  
glMatrixMode(GL_MODELVIEW); // Wähle die Modelview Matrix aus  glLoadIdentity(); // Resette die Modelview Matrix 
// End ReSizeGLScene
} 


int InitGL(GLvoid) // Der ganze Setup Kram für OpenGL kommt hier rein 
{ 
glShadeModel(GL_SMOOTH); // aktiviert weiches Shading (Smooth Shading) 
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(1.0f); // Depth Buffer Setup  
glEnable(GL_DEPTH_TEST); // aktiviert Depth Test  
glDepthFunc(GL_LEQUAL); // Die Art des auszuführenden Depth Test 
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // wirklich nette Perspektiven Berechnungen 
return TRUE; // Initialisierung war OK 
} 

int DrawGLScene(GLvoid) // Hier kommt der ganze Zeichnen-Kram hin 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Lösche den Bildschirm und den Depth-Buffer  
    glLoadIdentity(); // Resettet die aktuelle Modelview Matrix  
    return TRUE; // Alles war OK 
} 

GLvoid KillGLWindow(GLvoid) // Entferne das Fenster korrekt 
{ 
    if (fullscreen) // Sind wir im Fullscreen Modus?  
    { 
         ChangeDisplaySettings(NULL,0); // Wenn ja, wechsle zurück zum Desktop  
         ShowCursor(TRUE); // Zeige den Maus-Zeiger  
    } 

     if (hRC) // Haben wir einen Rendering Context?  
     { 
         if (!wglMakeCurrent(NULL,NULL)) // Können wir den DC und RC Kontext freigeben?  
         { 
             MessageBox(NULL,"Release Of DC And RC Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION); 
         } 

         if (!wglDeleteContext(hRC)) // Können wir den RC löschen?  
         { 
             MessageBox(NULL,"Release Rendering Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION); 
         } 
         hRC=NULL; // Setze RC auf NULL  
     } 

      if (hDC && !ReleaseDC(hWnd,hDC)) // Können wir DC freigeben?  
      { 
          MessageBox(NULL,"Release Device Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION); 
          hDC=NULL; // Setze DC auf NULL  
      } 

      if (hWnd && !DestroyWindow(hWnd)) // Können wir das Fenster zerstören?  
      { 
          MessageBox(NULL,"Could Not Release hWnd.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION); 
          hWnd=NULL; // Setze hWnd auf NULL  
      } 

       if (!UnregisterClass("OpenGL",hInstance)) // Können wir die Klasse de-registrieren?  
       { 
           MessageBox(NULL,"Could Not Unregister Class.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION); 
           hInstance=NULL; // Setze hInstance auf NULL  
       } 
} 

BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag) { 
     GLuint PixelFormat; // Enthält die Ergebnisse nachdem nach was passendem gesucht wurde 
     WNDCLASS wc; // Fenster Klassen Struktur  
     DWORD dwExStyle; // erweiterter Fenster-Stil 
     DWORD dwStyle; // Fenster-Stil 
     RECT WindowRect; // Enthält die obere linke / untere rechte Eckwerte des Rechtecks  
     WindowRect.left=(long)0; // Setze linken Wert auf 0  
     WindowRect.right=(long)width; // Setze rechten Wert auf die gewünschte Breite 
     WindowRect.top=(long)0; // Setze den oberen Wert auf 0  
     WindowRect.bottom=(long)height; // Setze unteren Wert auf die gewünschte Höhe 
     fullscreen=fullscreenflag; // Setze das globale Fullscreen Flag 
     hInstance = GetModuleHandle(NULL); // Ermittle die Instanz für unser Fenster  
     wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; // Zeichne neu beim bewegen und eigener DC für's Fenster  
     wc.lpfnWndProc = (WNDPROC) WndProc; // WndProc behandelt die Nachrichten  
     wc.cbClsExtra = 0; // Keine extra Fenster-Daten  wc.cbWndExtra = 0; // Keine extra Fenster-Daten  
     wc.hInstance = hInstance; // Setze die Instanz  wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); // Lade das Standard-Icon  
     wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Lade den Pfeil-Zeiger  
     wc.hbrBackground = NULL; // es wird kein Hintergrund für GL benötigt  
     wc.lpszMenuName = NULL; // Wir wollen kein Menü  
     wc.lpszClassName = "OpenGL"; // Setze den Klassen-Namen 
     if (!RegisterClass(&wc)) // Versuche die Fenster-Klasse zu registrieren 
     { 
         MessageBox(NULL,"Failed To Register The Window Class.","ERROR",MB_OK|MB_ICONEXCLAMATION); 
         return FALSE; // beende und gebe FALSE zurück 
     } 

     if (fullscreen) // Fullscreen Modus?  
     { 
         DEVMODE dmScreenSettings; // Device Modus  
         memset(&dmScreenSettings,0,sizeof(dmScreenSettings)); // Stelle sicher, dass der Speicher geleert ist  
         dmScreenSettings.dmSize=sizeof(dmScreenSettings); // Größe der Devmode Struktur  
         dmScreenSettings.dmPelsWidth = width; // ausgewählte Screen Breite 
         dmScreenSettings.dmPelsHeight = height; // ausgewählte Screen Höhe  
         dmScreenSettings.dmBitsPerPel = bits; // ausgewählte Bits Per Pixel  
         dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT; 

         // Versuche gewählten Modus zu setzen und Ergebnisse zurückliefern. ANMERKUNG: CDS_FULLSCREEN lässt die Start-Leiste nicht anzeigen.  
         if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL) 
         { 
              // Wenn der Modus fehl schlägt, biete zwei Optionen an. Beenden oder im Fenster-Modus laufen lassen.  
             if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?","NeHe GL",MB_YESNO|MB_ICONEXCLAMATION)==IDYES) 
             { 
                  fullscreen=FALSE; // wähle Fenster-Modus aus 
                  } else { 
                      // Message Box anzeigen, die den Benutzer wissen lässt, dass das Programm geschlossen wird.  
                      MessageBox(NULL,"Program Will Now Close.","ERROR",MB_OK|MB_ICONSTOP); 
                      return FALSE; // beende und gebe FALSE zurück  
             }
         }
     } 

     if (fullscreen) // Fullscreen Modus?  
     { 
         dwExStyle=WS_EX_APPWINDOW; // erweiterter Fenster-Stil  
         dwStyle=WS_POPUP; // Fenster-Stil  
         ShowCursor(FALSE); // verstecke Maus-Zeiger  
     } else { 
          dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; // erweiterter Fenster-Stil  
          dwStyle=WS_OVERLAPPEDWINDOW; // Fenster Stil  
     } 

     djustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle); // justiere das Fenster der angeforderten Größe entsprechend 

     if (!(hWnd=CreateWindowEx( dwExStyle, // erweiterter Stil für das Fenster  
         "OpenGL", // Klassen Name  
         title, // Fenster Titel  
         WS_CLIPSIBLINGS | // benötigter Fenster-Stil
         WS_CLIPCHILDREN | // benötigter Fenster-Stil  
         dwStyle, // ausgewählter Fenster Stil  
         0, 0, // Fenster Position  
         WindowRect.right-WindowRect.left, // berechne die justierte Fenster-Breite  
         WindowRect.bottom-WindowRect.top, // berechne die justierte Fenster-Höhe  
         NULL, // Kein Parent-Fenster  
         NULL, // Kein Menu  
         hInstance, // Instanz  
         NULL))) // Leite nichts an WM_CREATE weiter  
     { 
         KillGLWindow(); // Resette die Ansicht  
         MessageBox(NULL,"Window Creation Error.","ERROR",MB_OK|MB_ICONEXCLAMATION); 
         return FALSE; // Gebe FALSE zurück  
     } 

      static PIXELFORMATDESCRIPTOR pfd= // pfd teilt Windows mit, wie wie die Dinge haben wollen  
      { 
          sizeof(PIXELFORMATDESCRIPTOR), // Größe des Pixel Format Descriptors  
          1, // Versions Nummer  
          PFD_DRAW_TO_WINDOW | // Format muss Fenster unterstützen  
          PFD_SUPPORT_OPENGL | // Format muss OpenGL unterstützen  
          PFD_DOUBLEBUFFER, // Muss Double Buffering unterstützen  
          PFD_TYPE_RGBA, // Fordere ein RGBA Format an  bits, // wähle unsere Farbtiefe aus  
          0, 0, 0, 0, 0, 0, // Color Bits werden ignoriert  
          0, // Kein Alpha Buffer  
          0, // Shift Bit wird ignoriert  
          0, // Kein Accumulation Buffer  
          0, 0, 0, 0, // Accumulation Bits werden ignoriert  
          16, // 16Bit Z-Buffer (Depth Buffer)  
          0, // Kein Stencil Buffer  
          0, // Kein Auxiliary Buffer 
          PFD_MAIN_PLANE, // Haupt-Zeichen-Schicht  
          0, // Reserviert  
          0, 0, 0 // Layer Masken werden ignoriert  
      };

      if (!(hDC=GetDC(hWnd))) // Haben wir einen Device Kontext erhalten?  
      { 
          KillGLWindow(); // Resette die Anzeige  
          MessageBox(NULL,"Can't Create A GL Device Context.","ERROR",MB_OK|MB_ICONEXCLAMATION); 
          return FALSE; // Gebe FALSE zurück  
      }

      if (!(PixelFormat=ChoosePixelFormat(hDC,&pfd))) // Hat Windows ein passendes Pixel Format gefunden?  
      { KillGLWindow(); // Resette die Anzeige  
      MessageBox(NULL,"Can't Find A Suitable PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION); return FALSE; // Gebe FALSE zurück  
      } 

      if(!SetPixelFormat(hDC,PixelFormat,&pfd)) // Können wir das Pixel Format setzen?  
      { KillGLWindow(); // Resette die Anzeige  
      MessageBox(NULL,"Can't Set The PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION); return FALSE; // Gebe FALSE zurück  
      }

      if (!(hRC=wglCreateContext(hDC))) // Können wir einenRendering Kontext kriegen?  
      { 
          KillGLWindow(); // Resette die Anzeige  
          MessageBox(NULL,"Can't Create A GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION); 
          return FALSE; // Gebe FALSE zurück  
      }

       if(!wglMakeCurrent(hDC,hRC)) // Versuche den Rendering Kontext zu aktivieren  
       { 
           KillGLWindow(); // Resette die Anzeige  
           MessageBox(NULL,"Can't Activate The GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION); 
           return FALSE; // Gebe FALSE zurück  
       } 

       ShowWindow(hWnd,SW_SHOW); // Zeige das Fenster  
       SetForegroundWindow(hWnd); // Etwas höhere Priorität  
       SetFocus(hWnd); // Setze den Tastatur-Fokus auf das Fenster  
       ReSizeGLScene(width, height); // Initialisiere unseren perspektivischen GL-Screen 

       if (!InitGL()) // Initialisiere unser neu erzeugtes GL Fenster  
       { 
           KillGLWindow(); // Resette die Anzeige  
           MessageBox(NULL,"Initialization Failed.","ERROR",MB_OK|MB_ICONEXCLAMATION); return FALSE; // Gebe FALSE zurück  
       }
       return TRUE; // Erfolg 
} 

LRESULT CALLBACK WndProc( HWND hWnd, // Handle für dieses Fenster 
                         UINT uMsg, // Nachricht für dieses Fenster  
                         WPARAM wParam, // Weitere Nachrichten Informationen  
                         LPARAM lParam) // Weitere Nachrichten Informationen 
{ 
    switch (uMsg) // Überprüfe auf Fenster-Nachrichten  
    { 
        case WM_ACTIVATE: // Wenn Aktivierungs-Nachricht reinkommt  
            { 
                if (!HIWORD(wParam)) // Überprüfe Minimierungs-Status  
                { active=TRUE; // Programm ist aktiv  
                } else { 
                    active=FALSE; // Programm ist nicht länger aktiv  
                } return 0; // Kehre zurück zur Nachrichten-Schleife  
            } 

            case WM_SYSCOMMAND: // hereinkommende System Befehle  
                { 
                    switch (wParam) // Überprüfe auf System Aufrufe  
                    { 
                    case SC_SCREENSAVE: // versucht der Screensaver sich zu starten?  
                    case SC_MONITORPOWER: // versucht der Monitor in den Energiesparmodus zu gehen?  
                        return 0; // verhindere das  
                    } 
                    break; // Ende  
                } 

                case WM_CLOSE: // Haben wir eine Nachricht zum Schließen erhalten?  
                    { 
                        PostQuitMessage(0); // Sende eine Beenden-Nachricht  
                        return 0; // Springe zurück  
                    } 

                    case WM_KEYUP: // Wurde eine Taste losgelassen?  
                        { 
                            keys[wParam] = FALSE; // Wenn ja, markiere sie mit FALSE  
                            return 0; // Springe zurück  
                        } 

                        case WM_SIZE: // ändere die Größe des Fenster  
                            { 
                                ReSizeGLScene(LOWORD(lParam),HIWORD(lParam)); // LoWord=Breite, H
                                return 0; // Springe zurück  
                            } 
    } 

     // Übergebe alle nicht bearbeiteten Nachrichten an DefWindowProc  
    return DefWindowProc(hWnd,uMsg,wParam,lParam); 
} 

int WINAPI WinMain( HINSTANCE hInstance, // Instanz  HINSTANCE hPrevInstance, // vorherige Instanz  
                   LPSTR lpCmdLine, // Kommandozeilen Parameter  
                   int nCmdShow) // Fenster Anzeige Status 
{ 
    MSG msg; // Windows Nachrichten Struktur  
    BOOL done=FALSE; // Bool Variable um die Schleife zu beenden 
    
    // erzeuge unser OpenGL Fenster  
    if (!CreateGLWindow("NeHe's OpenGL Framework",640,480,16,fullscreen)) 
    { 
        return 0; // Beende, wenn Fenster nicht erzeugt wurde  
    } 

    while(!done) // Schleife die so lange läuft, bis done=TRUE  
    {
        if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) // Wartet eine Nachricht?  
        { 
            if (msg.message==WM_QUIT) // Haben wir eine Nachricht zum beenden erhalten?  
            { 
                done=TRUE; // Wenn ja done=TRUE  
            } else // Wenn nicht, bearbeite die Fenster-Nachrichten  
            { 
                TranslateMessage(&msg); // Übersetze die Nachricht  
                DispatchMessage(&msg); // bearbeite die Nachricht  
            } 
        } else // Wenn da keine Nachrichten sind  
        { 
            // Zeichne die Szene. Schau nach der ESC-Taste und Beendigungs-Nachrichten von DrawGLScene()  
            if (active) // Programm aktiv?  
            { 
                if (keys[VK_ESCAPE]) // Wurde ESC gedrückt?  
                { 
                    done=TRUE; // ESC Signalisiert, dass Beendet werden soll  
                } else // Es ist noch nicht Zeit zum beenden, zeichne Screen neu  
                { 
                    DrawGLScene(); // Zeichne die Szene  
                    SwapBuffers(hDC); // Swap Buffers (Double Buffering)  
                } 
            } 

            if (keys[VK_F1]) // Wurde F1 gedrückt?  
            { 
                keys[VK_F1]=FALSE; // Wenn ja, setze Taste auf FALSE  
                KillGLWindow(); // Kill unser aktuelles Fenster  
                fullscreen=!fullscreen; // Wechsel zwischen Fullscreen und Fester-Modus  // Erzeuge unser OpenGL Fenster erneut  
                if (!CreateGLWindow("NeHe's OpenGL Framework",640,480,16,fullscreen)) 
                { 
                    return 0; // Beenden, wenn das Fenster nicht erzeugt wurde  
                }
            }
        }
    }

    // Shutdown  
    KillGLWindow(); // Kill das Fenster  
    return (msg.wParam); // Beende das Programm 
}


Find ich schade, dass nichts geht - ich möchte mir auch ungern ein Buch kaufen, bevor ich mich fest entschlossen habe & es auch schon etwas behersche.
Kennt ihr andere aktuellere Tutorials? Ich habe gehört, dass die Headerdati gl\glaux.h und somit auch die NeHe Tutorials veraltet sind.
Wäre gut könntet Ihr mir helfen!
Mfg
LittleProgger

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

16.08.2010, 15:53

Die Tutorials mögen nicht mehr die neusten sein, aber dass Dir der glaux-Header (und vermutlich auch die Bibliothek) fehlt, dass ist meiner Meinung nach kein Grund es nicht zu nutzen und ähnliches kann Dir in jedem anderen Tutorial ebenfalls passieren.
Meine Empfehlung: Such Dir einfach den Header und die Lib (falls man eine braucht) aus dem Web und bleib bei NeHe.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

16.08.2010, 16:18

Hi,
Also nach meinen Informationen sind bei jedem Compiler (ich habe vc9.0 wie oben schon gesagt) die Opengl-Daten dabei.
Mfg
LittleProgger

Übrigens:
Bei Code::Blocks funktioniert zwar Opengl, aber die Tutorials von NeHe gehen dort nicht (deswegen denke ich auch, dass NeHe die Tutorials mit einem alten SDK geschrieben hat und die neueren Opengl Sdk's nicht Abwärtskomptabel sind).

Ich glaube, ich lade mir gleich mal Visual Studio 2010 und teste es erneut. Die IDE soll anscheint auch viele neue features haben.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »LittleProgger« (16.08.2010, 16:25)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

16.08.2010, 16:26

Nein, der Header glaux (und die eventuelle lib dazu) ist *nicht* Bestandteil des normalen OpenGL-Frameworks. Deswegen meckern sowohl VisualStudio, als auch Code::Blocks.
Das ist der einzige Grund, warum es bei dir nicht geht.
Wie gesagt, hol Dir den Header (und die Lib) aus'm Web. Fehlende Header können Dir bei jedem Tutorial passieren.

PS:
Was heißt, "ich lade mir gleich mal"... woher?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

16.08.2010, 16:33

Hi,
Z.b. von Chip.de?^^ Ich versteh nicht worauf die hinaus willst.
Ich schau mal nach der Lib und melde mich dann wieder.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

16.08.2010, 16:36

Es gibt kein OpenGL SDK im eigentlichen Sinn. Windows unterstützt direkt nur OpenGL 1.1 auf alles weitere muss unter Windows über Extensions zugegriffen werden.
glaux ist eine total veraltete Utility Library die heute kaum noch irgendwo zu finden ist.

7

16.08.2010, 16:44

Hi,
Ist ja schön, dass alle anders denken ^^
Geht Opengl 1.1 denn auch auf anderen Betriebssystemen - kennst du Tutorials für Opengl 1.1, die du mir empfehlen kannst?

Zu Directx will ich ungern wechseln, langer Init-Code und nicht Plattformunabhängig.

Mfg
LittleProgger

Edit:
Jetzt lese ich immer wieder im Forum "Es wird Opengl 2.0 benötigt", aber wenn Windows doch nur Opengl 1.1 unterstützt :?:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »LittleProgger« (16.08.2010, 16:50)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

16.08.2010, 17:01

Edit:
Jetzt lese ich immer wieder im Forum "Es wird Opengl 2.0 benötigt", aber wenn Windows doch nur Opengl 1.1 unterstützt :?:

Es gibt kein OpenGL SDK im eigentlichen Sinn. Windows unterstützt direkt nur OpenGL 1.1 auf alles weitere muss unter Windows über Extensions zugegriffen werden.
glaux ist eine total veraltete Utility Library die heute kaum noch irgendwo zu finden ist.

Da steht nicht dass es nicht möglich ist, da steht nur dass Windows selbst nur ein Interface für OpenGL 1.1 mitliefert. Dein aktueller Grafiktreiber kann im Normalfall aber auch aktuelles OpenGL und über den OpenGL Extension Mechanismus lässt sich das natürlich auch verwenden. Wenn du das nicht per Hand machen willst schau dir mal eine entsprechende Library, z.B. GLEW an.

9

16.08.2010, 17:27

Hi,
Ich glaube ich lass Opengl mal liegen. Nichts funktioniert - ich werde mich lieber erst mit SFML beschäftigen. Plattformunabhängig will ich auf jeden Fall bleiben und mit Opengl geht anscheint garnichts. Verstehen tuh ich das auch nicht wirklich. Zwar wäre mir Opengl weitaus lieber gewesen, aber ich weiß auch nicht mehr, wie ich das zum funktionieren bringen kann.
Danke für eure Antworten.
Mfg
LittleProgger

Tobiking

1x Rätselkönig

  • Private Nachricht senden

10

16.08.2010, 18:21

Wenn du OpenGL lernen willst musst du dir schon etwas Mühe geben. Der erste Punkt ist, dein Code nutzt glaux gar nicht. Schmeiß den include raus, und es sollte laufen. Glaux wird erst später verwendet. Und dort ist der zweite Punkt:

Zitat von Nehe Lesson 1

Zitat

NOTE #2: When the first tutorials were written, GLAUX was the way to go. Over time GLAUX lost support. Many of the tutorials on this site still use the old GLAUX code. If your compiler does not support GLAUX or you would rather not use it, download the GLAUX REPLACEMENT CODE from the main page (left menu).

Werbeanzeige