Español
Online-Documentación

ogl.tutorial.initialisierung Erklärung: OpenGL

 
← zurück a OGL-Tutorialübersicht ogl->tutorial 

[head]Einleitung[/head]
¡Hola Amigos des XProfan-OpenGL,

dies es una Intento el Implementierung de Tutoriales en el OnlineDoku.

El OnlineDoku es por lo tanto besonders geeignet como Miembros cualquier mitmischen, korrigieren y erweitern puede.

In diesem Kapitel widme Yo mich lediglich el Herstellung uno OpenGL-Fensters el später a Anzeige de Objekten dienen se.

Hier es no por lo tanto ogl ("init"... con seinen Parametern a erklären.

Anfangs debería uno se para una Variante entscheiden:

? Erzeugung <a href='#full'>Vollbild-Gamescreen</a> como en redcube 
? Erzeugung <a href='#win'>Fenster-Gamescreens</a>
? Erzeugung <a href='#gdi'>Fenster con OGL-Anzeigebereich neben GDI-Controls</a> como z.B. en okrea 

Trotzdem simplemente veces vorab una Minisource welcher OpenGL simplemente producido y una Cuboiden zeigt:
cls
ogl("init",%hwnd,0.0,0.0,0.0,1)
ogl("clear")
ogl("origin",0,0,-10)
ogl("cuboid",1,1,1)
ogl("show")
waitinput
end

[head]>full Vollbild-Gamescreen erzeugen[/head]
Ein Vollbild-Gamescreen erzeugen Es el leichteste aller Übungen, birgt aber todavía el Tücke wegen el Anzeigeproportionalität.

Wer lo bastante simplemente möchte producido also zuerst una Ventana principal %hwnd  y initialisiert simplemente darauf el OGL. Das funktioniert así:
windowstyle 80'Ventana sin cada Schnickschnack
window 0,0 - %maxx,%maxy'vollen Bildschirm ausfüllen
ogl("init",%hwnd,0,0,0,1)
waitinput
ogl("done")
end

Jenachdem welche Auflösung al Computer eingestellt es se hiernach una gröstmögliches Ventana genera y OpenGL darauf initialisiert.

Jetzt kann lo aber ser el el Auflösung no typisch 4/3 es - el heist - el el Y-Auflösung z.B. no como en 640x480 oder 1024x768 genau el Dreiviertel el X-Auflösung es. Auch el neuen TFT-Bildschirme kommen gerne con muy unterschiedlichen Auflösungen por lo tanto - como z.B. 1280x768 oder 1280x1024.

Das XProfanOpenGL-Anzeigefenster skaliert se sin embargo no unproportional qué a Folge ha el z.B. links y rechts una schwarzer Rand entstehen kann. Wenn (%maxx /4*3)<%maxy  es entsteht oben y unten una Rand, de otra manera entsteht el Rand links y rechts.

Der möglicherweise entstehende Rand es insofern problematisch como el Rand trotzdem para Dibujar de OpenGL verwendet se. Das Anbringen z.B. de una Cockpit ginge also no como entweder el Cockpit no vollständig a sehen es oder "unterhalb" vom Cockpit una Rand entsteht en el z.B. el Strasse/Land a sehen wäre. Der Rand muss also weg!

Bedienen nosotros also uno Tricks si wir el Bildschirmauflösung no ändern querer. Wir ir ahora veces su de el el Y-Auflösung grösser ser kann como %maxx /4*3. Umgekehrt ists seltener el Fall - kann aber genauso vorkommen!

Wir erzeugen simplemente una zweites Ventana unterhalb de %hwnd  qué el ganzen Bildschirm ausfüllt, y legen una en el Größe angepasstes (4/3Proportional!) %hwnd  simplemente darüber.
windowstyle 80'Ventana sin cada Schnickschnack
var bgwin&=createwindow(0,"",0,0,%maxx,%maxy)'en Desktop una Hintergrundfenster erzeugen
enablewindow bgwin&,0'deaktivieren wir lo así una Clic el Ventana todavía weniger tangiert
window 0,0 - maxx,maxy/4*3
setwindowpos hwnd%=0,((maxy-(maxx/4*3))/2) - maxx,maxx/4*3;-1'hwnd en Bildschirmmitte verrücken y el Vordergrund holen.
ogl("init",%hwnd,0,0,0,1)
waitinput
ogl("done")
end

Natürlich puede ser nun el bgwin& z.B. una Farbe verpassen. Hierzu puede ser simplemente startpaint  nutzen:
startpaint bgwin&
cls 0'hacer wirs simplemente schwarz
endpaint

Más dazu später...

[head]>win Ventana-Gamescreen erzeugen[/head]
Como auch beim Vollbild-Gamescreen necesario wir en el Proportionalität vom OGL-Anzeigebereich achten. Der innere Zona de %hwnd  debería also 4/3 ser.

Hierbei puede nosotros folgende kleine Procedimiento zunutze hacer:

An esta Procedimiento puede wir Höhe y Breite transferencia y el %hwnd  se en esta Maße adaptado.

Erzeugen wir also primero una Ventana y passen el Größe en Proportionalität a:
cls'Ventana erzeugen
setinnersize width(%hwnd),(width(%hwnd)/4*3)

Hierdrauf nun el OpenGL-Anzeigebereich inicializar:
ogl("init",%hwnd,0,0,0,1)
waitinput
ogl("done")
end

y el wars auch ya. Natürlich debería uno por windowstyle  dafür sorgen el entweder a) una Vergrössern/Verkleinern/Skalieren des %hwnd  no posible es oder b) después de Erkennung uno Skalierung vom %hwnd  erneut setinnersize como oben aufrufen.

Más dazu später...

[head]>gdi OGL-Anzeigebereich neben GDI-Controls erzeugen[/head]
Dies es sicherlich una el schlimmsten Aufgaben porque el Position y Größe des OGL-Anzeigebereiches puede wir no bestimmen. Der OGL-Anzeigebereich füllt siempre el kompletten Parent de y nimmt seine Ausmaße a.

Hierbei necesario wir also el OGL-Anzeigebereich en una más Control en lugar de el %hwnd  legen.

Nach viel Herumprobiererei con okrea  kann Yo de algo Erfahrung berichten el hierzu al Besten una Control genutzt se qué con dieser Función erstellt se:
proc createChildWindowAsStatic

    parámetros h&,s$,x&,y&,xx&,yy&
    declarar ws&
    h&=create("ChildWindow",h&,s$,x&,y&,xx&,yy&)'child erzeugen
    'titelbar y rahmen entfernen | setwindowlonggedöns
    ws&=GetWindowLongA(h&,-16) - $C00000 - $40000
    SetWindowLongA(h&,-16,ws&)
    volver h&

ENDPROC


Wir erzeugen also zuerst la ventana principal %hwnd :
cls'Ventana erzeugen
setinnersize width(%hwnd),(width(%hwnd)/4*3)

erzeugen entonces unser OGL-Child:
var ogl.child&=createChildWindowAsStatic(%hwnd,".OglParent",0,0,width(%hwnd),height(%hwnd))

y inicializar nun hierdrauf unseren OGL-Anzeigebereich:
ogl("init",ogl.child&,0,0,0,1)
waitinput
ogl("done")
end

fertig. Jetzt puede wir simplemente con setwindowpos  el Control ogl.child& positionieren y así auch unseren OGL-Anzeigebereich. Nach Positionierung de ogl.child& debería De todos modos una ogl("Show") tener lugar como hier kein automatisches Neuzeichnen de Statten va.

Más dazu später...
 
08.02.2007  
 



Note / Question or Comment to the Help--Topic


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

809 Views

Untitledvor 0 min.
Tango06.08.2021
Donnie07.04.2013

Themeninformationen

Dieses Thema ha 1 subscriber:

iF (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie