OpenGL

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

ToeB

Betreff: OpenGL

BeitragDo, Jul 14, 2011 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mal ne kleine Frage (und nichts dazu gefunden): In BlitzMax kann man ja für Max2D OpenGL benutzen. Doch kann man irgendwie OpenGL auch so einbinden dass man damit in 3D Arbeiten kann ? Ist etwas umständlich formuliert, also ich möchte OpenGL für 3D in BlitzMax verwenden (ich mag minib3d nicht so besonders ^^), sodass einem die kompletten OpenGL befehle zur verfügung stehen ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Chrise

Betreff: Re: OpenGL

BeitragDo, Jul 14, 2011 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
OpenGL is doch 3D? Very Happy
Dazu musst du dir lediglich ein paar Tutorials ansehen, das Nehel Tutorial beispielsweise ist Recht einfach und gut zu verstehen. Danach kann man meistens schon ganz nette Sachen in OpenGL machen. Alle Befehle dafür beginnen in BlitzMax mit gl also einfach mal nach ner Referenz suchen und Befehle durchlesen Wink

lg Chrise
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.
 

PhillipK

BeitragDo, Jul 14, 2011 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich arbeite mich auch grade in OGL ein Smile

Allerdings habe ich keine möglichkeit gefunden, Blitzmax normal mit OGL befehlen zu füllen. Hab vllt nicht ordentlich gesucht Smile

Alles in allem ist es allerdings recht einfach, OGL befehle zu nutzen.

BlitzMax: [AUSKLAPPEN]
GLGraphics(Width, Height, depth, hertz)

Und schon hast du dein Fenster, was du mit OGL befehlen bemalen kannst.

Wichtig hierbei ist, das du kein normales CLS nehmen kannst. Dafür brauchst du sowas in der art:

BlitzMax: [AUSKLAPPEN]
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)


Allerdings bedarf es ein wenig mit Initialisierung als mit normalen Draw2d. Das fischt du am besten mit den entsprechenden suchkriterien aus dem inet Wink
Ich persönlich arbeite grade mit glOrtho() zb ^^

ToeB

BeitragDo, Jul 14, 2011 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Mhmm Danke schonmal Wink

Ich hab mir mal das Tut von NEHE heruntergeladen und probier nun das Sample1 zum laufen zu bringen... Ohne erfolg. Kann mir jemand vieleicht ein paar tipps geben ? Denn in der Dokumentation von Bmax sind die GL befehle nicht gelistet.. Ich blicks grad echt nicht ^_^#

Nur ein schwarzer Bildschirm bei mir :
BlitzMax: [AUSKLAPPEN]
Framework brl.GLGraphics
Import brl.system

Global ScreenWidth:Int=800
Global ScreenHeight:Int=600
Global ScreenDepth:Int=32

GLGraphics(ScreenWidth,ScreenHeight,ScreenDepth,0,GL_BACKBUFFER | GL_DEPTHBUFFER) '| BGL_FULLSCREEN
InitGl()

While Not KeyHit( KEY_ESCAPE )
nehe2()
glColor3f(1.0,1.0,1.0)
'Framecounter--------------------------------------------
Framecounter_counter=Framecounter_counter+1
If Framecounter_time=0 Then Framecounter_time=MilliSecs()
If Framecounter_time+1001 <MilliSecs() Then
Framecounter_framerate=Framecounter_counter
Framecounter_counter=0
Framecounter_time=MilliSecs()
EndIf
GLDrawText("FPS : "+Framecounter_framerate,ScreenWidth-(8*12),ScreenHeight-16-8)
'--------------------------------------------------------
GLDrawText("Nehe lesson 2",10,24)

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

Wend
End

Function InitGl()
glClearColor(0.0, 0.0, 0.0, 0.0)
glClearDepth 1.0
glDepthFunc(GL_LESS)
glEnable(GL_DEPTH_TEST)
glFrontFace(GL_CW)
glShadeModel(GL_SMOOTH)
glViewport(0,0,ScreenWidth,ScreenHeight)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(45.0,Float(ScreenWidth)/Float(ScreenHeight),1.0,100.0)
glMatrixMode(GL_MODELVIEW)
End Function

Function nehe2()
glClear GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT
glLoadIdentity
glTranslatef -1.5,0.0,-6.0
glBegin %GL_POLYGON
glVertex3f 0.0, 1.0, 0.0 ' Top
glVertex3f 1.0,-1.0, 0.0 ' Bottom Right
glVertex3f -1.0,-1.0, 0.0 ' Bottom Left
glEnd
glTranslatef 3.0,0.0,0.0
glBegin %GL_QUADS
glVertex3f -1.0, 1.0, 0.0 ' Top Left
glVertex3f 1.0, 1.0, 0.0 ' Top Right
glVertex3f 1.0,-1.0, 0.0 ' Bottom Right
glVertex3f -1.0,-1.0, 0.0 ' Bottom Left
glEnd
End Function


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Xeres

Moderator

BeitragDo, Jul 14, 2011 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Da findest du die GL befehle: OpenGL Reference Page
Was bei dem Code falsch läuft, kann ich dir auf Anhieb nicht sagen - wie viele Jahre hat der mittlerweile auf dem Buckel?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

n-Halbleiter

BeitragDo, Jul 14, 2011 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
So, wie ich das sehe, fehlt einfach ein "Flip". Du initialisierst ein Fenster mit Backbuffer (GL_BACKBUFFER) mit dem Befehl GLGraphics, tauschst aber nie die Buffer.

Und, noch eine Sache, die mir so eingefallen ist: Im Code wird zweimal in der Schleife glClear ausgeführt.
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

ToeB

BeitragDo, Jul 14, 2011 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Jop hatte es dann auch bemerkt Very Happy Hatte ja nur den Code verändert so wie er war...


Aber Danke trotzdem !


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Noobody

BeitragDo, Jul 14, 2011 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, du kannst OpenGL ohne weiteres ohne Max2D benutzen, um selber in 3D zu rendern. Alle benötigten Befehle dafür sind in Pub.OpenGL bereits gewrappt.

Damit du aber keinen eigenen Context aufsetzen, dich um Fenstererstellung oder sogar um die ganze Eventverarbeitung (und das ganze noch plattformunabhängig) kümmern musst, gibt es ausserdem noch BRL.GLGraphics, welches all das für dich macht. Du kannst also weiterhin Befehle wie KeyHit, AppTerminate, Flip etc. benutzen, solange du Graphics entsprechend aufsetzt: BlitzMax: [AUSKLAPPEN]
SetGraphicsDriver GLGraphicsDriver()
Graphics 800, 600

'Alternativ geht auch das hier:
GLGraphics 800, 600


Die ersten fünf NeHe-Tutorials sind übrigens schon nach BMax portiert worden und liegen der MaxIDE bei. Dazu einfach auf der Startseite auf "Tutorials and articles -> BlitzMax overview -> The first 5 'Nehe' OpenGL tutorials" gehen.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

ToeB

BeitragDo, Jul 14, 2011 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah super danke !


Ein paar Fragen habe ich dennoch noch Very Happy :
- In Blitz3D gibt es ja eine "Camera". Wie wird eine solche in OpenGL benutz ?
- Gibt es wirklich keine vernünftige Dokumentation Sad ? In der wirklich alles beschrieben wird (Nach Schema geordnet etc.)

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

PhillipK

BeitragDo, Jul 14, 2011 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich rate einfach mal ins blinde und sage, um eine "Camera" zu emulieren, musst du mit glTranslated() bzw glrotated() die Matrix verhunzen. Aber sicher bin ich mir nicht! Very Happy

Zur doku - ich hab nichts gesucht und somit nichts gefunden.
Aber ich habe mir die benötigten befehle durch blide anzeigen lassen, da alle mit gl anfangen, ist das recht simpel.
Den rest hat google gemacht =)

Ps: ein kleiner tipp schonmal vorweg.

glVertex gibt es zb als glVertex3f oder glVertex2d. d steht immer für double, f für float, i für int, s für short, b für byte. 3 Bedeutet 3 parameter - bei einem vertex also zb x,y,z.

das ganze gibt es in unmöglich vielen variationen - zb glColor4b (wenn ich mich nicht irre), für A,R,G,B als byte angabe. (hinweis OGL nutzt anscheinend signed byte oO glColor3b kann ich nur von 0 bis 127 nutzen. Alternativ geht allerdings auch float, ein wert zwischen 0.0 und 1.0)

Noobody

BeitragDo, Jul 14, 2011 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Zur Dokumentation: Das DGL Wiki ist wohl die umfangreichste deutsche Sammlung an Dokumentation/Tutorials/Resourcen zu praktisch allem, was mit OpenGL zu tun hat. Die Spezifikationen beziehen sich zwar jeweils auf Delphi, aber das spielt eigentlich keine Rolle. Link hier.

Zur Kamera: Es gibt kein "Kameraobjekt" in OpenGL (oder DirectX). Es gibt zum einen die Projektionsmatrix, die verwendet wird, um einen 3D Punkt in einen 2D Punkt zu "verwandeln", und zum anderen die Modelview-Matrix, mit der man Vertices vor der Projektion noch transformieren kann. Wenn du noch nicht viel mit Matrizen zu tun gehabt hast, würde ich mir am besten mal ein paar der Grundlagentutorials auf DGL zu Gemüte führen. Ich kenne die Tutorials zwar nicht, aber schätzungsweise sind sie auf dem gleichen Niveau wie der Rest der Seite und daher durchaus hilfreich Razz
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

shootermaker

BeitragDo, Jul 14, 2011 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich lese mich auch gerade in das Thema OpenGl unter bmax ein.
Um die alten Nehe - Tutorials zum laufen zu bekommen sollte dir dieser Link helfen (Tut. 2 - 8):

https://github.com/kfprimm/nehe_bmx

ToeB

BeitragDo, Jul 14, 2011 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok vielen Dank euch allen nochmals werde mir alles mal anschauen Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group