Hab vor einigen Tagen angefangen mit mit Opengl zu beschäftigen und habe mir jetzt erstmal vorgenommen eine kleine 2D Demo zu basteln. Allerdings gibt es jetzt schon probleme beim einfachen zeichnen. Ich habe mir eure VCL-Template runtergeladen und die ist auch super, allerdings will er nichts zeichnen Die Frames werden wie gewünscht ausgegeben, aber von Polygonen keine Spur... Jetzt habe ich in den Soucre Dateien von euch ein paar mal gesehen, dass es immer eine MEthode SetupPixelFormat gibt, habe aber im Online-Wiki keine Infos dazu gefunden. Wozu ist das gut und braucht man diese Methode?
Ich habe auch schon versucht, die Methode zu kopieren und dann aufzurufen, aber das Fenster blieb nach wie vor schwarz...
[edit] achso hab ganz vergessen: Es soll erstmal nur zu Testzwecken ein Dreieck gemalt werden, aber ich denke darauf wärt ihr auch noch gekommen [/edit]
Ich habe allerdings auch das Gefühl, dass ihr warscheinlich noch andere Fehler finden werdet, aber ich kann mir nicht erklären, warum nichts gezeichnet wird....
// Nur Fragmente mit niedrigerem Z-Wert (näher an Betrachter) \"durchlassen\"
glDepthFunc(GL_LESS);
// 2D Texturen
glEnable(GL_TEXTURE_2D);
// Löschfarbe für Farbpuffer setzen
glClearColor(0,0,0,0);
// Displayfont erstellen
BuildFont('MS Sans Serif');
// Idleevent für Rendervorgang zuweisen
Application.OnIdle:= ApplicationEventsIdle;
// Zeitpunkt des Programmstarts für FPS-Messung speichern
StartTick := GetTickCount;
// Textur namens 'dot.tga' laden
LoadTexture('images\dot.tga', MyTex[0],False);// <--- den Befehl könnt ihr löschen, soweit bin ich noch nich <!-- s:P --><img src=\"{SMILIES_PATH}/icon_razz.gif\" alt=\":P\" title=\"Razz\" /><!-- s:P -->
Registriert: Mo Nov 21, 2005 17:11 Beiträge: 10 Wohnort: Siegburg
kann mir mal endlich bitte bitte sagen was ihr für lektüre benutzt???
ich hab über all gesucht aber nix für delphi opengl oder delphigl gefunden ausser euren tutorials!
bitte antwortet mir!
*verzweifel*
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Axalus. So läuft das hier nicht ab! Es kann nicht angehen, dass du ständig in anderen Themen deine völlig Themenfremden Fragen postest. Erstelle ein eigenes Thema oder bleib bei dem Thema was ich aus deinem ersten Beitrag erstellt habe. Wenn du konkrete Problem hast, dann kannst du diese im Forum auch stellen und dir wird geholfen. In einem eigenen Thema versteht sich. Für alles andere gibt es noch das Wiki was für genau solche Probleme auch gemacht wurde.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
@der-cain:
Verschieb mal die Zeile "glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);" an den Anfang der Prozedur.
Außerdem füg mal, nur zu Testzwecken (Ich weiss, dass du 2d brauchst), statt glOrtho diese Zeile ein:
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2068
Programmiersprache: C++
Im Orthomodus bewegst du dich mit - aus dem sichtbaren Bereich.
Probier es mal mit:
Code:
procedure TGLForm.DrawDot();// Warum wird hier nix gezeichnet???
begin
glTranslatef(150,150,-6);
glBegin(GL_TRIANGLES);
glVertex3f(-10,-10,0);
glVertex3f(10,-10,0);
glVertex3f(0,10,0);
glEnd;
end;
Oder das was La Boda geschrieben hat.
Übrigens versuch mal ein 1 Pixel grosses Dreieck auf einem 640*480 grossen Fenster zu sehen Im Orthomodus definierst du die Grösse der "Weltkoordinaten"
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Jetzt wos i0n0s schreibt, fällts mir auch auf.
Code:
glOrtho(0,640,480,0,0,128);
Hier musst du nicht die \"Auflösung\" eingeben, das machst du mit glViewport.
Hier gibst du praktisch die Weltkoordinaten an mit denen du einen Obejkte später verschiebst. Und in der Tat ist ein ein Pixel großes Dreieck ziemlich verloren in so ner großen, schwarzen Fläche
Recht angenehme Werte wären also
Code:
glOrtho(-10,10,-10,10,0,128);
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Cain: Habe bei dir mal die Pascaltags hinzugefügt. Das ist für Delphicode besser als die Codetags.
Zu deiner Frage. Wenn die Methode kein GL oder WGL voranstehen hat oder sonst von OpenGL Handelt, dann ist die Wahrscheinlichkeit groß, dass diese Methode von Windows stammt oder eine eigene ist. Für den Fall, dass diese von Windows stammt gibt es die MSDNs und da findet man auch eine Beschreibung zu SetPixelFormat. Aber in deinem Fall brauchst du dich darum nicht zu kümmern, da der Aufruf von SetupPixelFormat bereits in der Methode CreateRenderContext statt findet. Diese Methode stammt aus dem OpenGL Header und erstellt ohne Umwege einen gültigen Context.
Zu dem warum du nichts siehst.
In dem ShowText setzt du noch einmal den 2D Modus. Den setzt du aber bereits in ApplicationOnIdle. Den ViewPort und das glOrtho solltest du eigentlich auch nur setzen, wenn sich die Größe des Fenster ändert. Also würde es bei einem fixen Fenster genügen, wenn du dies direkt nach dem Initialisieren deines RCs setzt.
Sonst Hat i0n0s recht. Das Greieck verschiebst du in den unsichtbaren bereich. Du könntest das Translate auch erst mal komplett weg lassen.
Angaben bei glOrtho: Das kommt immer darauf an was man vor hat. Ich verwende bei glOtho IMMER die Auflösung des Viewports. Ich will aber auch IMMER Pixelgenau zeichnen. Wenn du das nicht vorhättest würden auch andere Werte funktionieren. Kommt da auch drauf an wie du es gerne am liebsten hast.
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.