I have some text scrolling up the screen but I would like to give it the starwars intro effect. Can I rotate the camera view to get perspective whilst still using Max2D for the majority of the code? Any help appreciated.
Rotate view?
BlitzMax Forums/BlitzMax OpenGL Programming/Rotate view? I think that you cannot use Max2D abd rotate the angle of the view. Because Max2D uses (I think) strictly GluOrtho2D or glOrtho.
I don't see any reason why you can't call glOrtho2D or whatever any number of times in your code, ie before you render stuff, to give you a perspective projection.
Correct, Daniel. Cracked it last nite. You can reset the projection in your code.
It's pretty handy too - basically you are moving the camera and it lets you zoom, rotate and fly your game screen around in three dimensions pretty easily.
Yeah I like it but I'm slow getting to grips with OGL. It works but I don't know if I'm doing things 'the right way'
So, how about posting your code? Because this would be totally sweet to see used in the middle of a game :)
graphics 800,600,32 starfont=loadimagefont("Jedi Normal") 'glPushmatrix() SetImageFont starfont Const text_row_h=70 'MY STUFF HERE fin=0 ystart#=450.00 SetBlend ALPHABLEND ncount=0 ndelay=1 glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(20.0,-8.0/6.0,1.0,100000.0) glrotatef(180.0,0,0,1) 'glrotatef (180.0,0.0,0.0,1.0) glEnable(GL_FOG) Local fcols:Float[]=[0.0,0.0,0.0,0.0] Local colptr:Float Ptr=VarPtr fcols[0] glFogfv(GL_FOG_COLOUR,colptr) glFogf(GL_FOG_START,500) glFogf(GL_FOG_END,1000) glFogi(GL_FOG_MODE,GL_LINEAR) xpos=-108 angg#=80.0 dist=-836.0 scaley#=1.29599917 scalex#=0.113999963 Cls Flip Repeat Cls glMatrixMode(GL_MODELVIEW) glLoadidentity() SetOrigin xpos,ystart glTranslatef(0,0,dist) glrotatef(angg,1,0,0) SetScale scalex,scaley SetColor Rand(0,255),Rand(0,255),Rand(0,255) DrawText " ***********************************",0.0,text_row_h DrawText " * your text here!! *",0.0,text_row_h*2 DrawText " **********************************",0.0,text_row_h*3 DrawText " * ************** *",0.0,text_row_h*4 DrawText " *************04/05*************",0.0,text_row_h*5 EndIf ncount:+1 If ncount>ndelay Then ncount=0 If ncount=0 Then ystart:-1 Flip Until KeyHit(KEY_ESCAPE) Or ystart<-2000.0 glMatrixMode GL_PROJECTION glLoadidentity() glOrtho 0,800,600,0,-1,1 SetScale(1,1) SetColor 255,255,255 SetAlpha 1.0 glMatrixMode GL_MODELVIEW glLoadIdentity SetOrigin 0,0 glDisable(GL_FOG) 'glPopmatrix() Cls Flip
Here you go - I've tried to make a couple of mods so you can run it straight off the bat - untested - you'll need to download a font called 'Jedi Normal' to
see it as intended - this is on a website called "2200 free fonts" - available in Mac or PC format. Make sure the font filename is correct in the code above.
compile errors!
"endif" without "if
missing parameter "size" in line 2
had to go at that point, hope that helps
"endif" without "if
missing parameter "size" in line 2
had to go at that point, hope that helps
Graphics 800,600,32 starfont=LoadImageFont("Jedi Normal",48) 'glPushmatrix() SetImageFont starfont Const text_row_h=70 'MY STUFF HERE fin=0 ystart#=450.00 SetBlend ALPHABLEND ncount=0 ndelay=1 glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(20.0,-8.0/6.0,1.0,100000.0) glrotatef(180.0,0,0,1) 'glrotatef (180.0,0.0,0.0,1.0) glEnable(GL_FOG) Local fcols:Float[]=[0.0,0.0,0.0,0.0] Local colptr:Float Ptr=VarPtr fcols[0] glFogfv(GL_FOG_COLOUR,colptr) glFogf(GL_FOG_START,500) glFogf(GL_FOG_END,1000) glFogi(GL_FOG_MODE,GL_LINEAR) xpos=-108 angg#=80.0 dist=-836.0 scaley#=1.29599917 scalex#=0.113999963 Cls Flip Repeat Cls glMatrixMode(GL_MODELVIEW) glLoadidentity() SetOrigin xpos,ystart glTranslatef(0,0,dist) glrotatef(angg,1,0,0) SetScale scalex,scaley SetColor Rand(0,255),Rand(0,255),Rand(0,255) DrawText " ***********************************",0.0,text_row_h DrawText " * your text here!! *",0.0,text_row_h*2 DrawText " **********************************",0.0,text_row_h*3 DrawText " * ************** *",0.0,text_row_h*4 DrawText " *************04/05*************",0.0,text_row_h*5 DrawText "BLAH BLAH etc ",0,text_row_h*6 DrawText "* *",0,text_row_h*7 DrawText "* *",0,text_row_h*8 DrawText "* *",0,text_row_h*9 ncount:+1 If ncount>ndelay Then ncount=0 If ncount=0 Then ystart:-1 Flip Until KeyHit(KEY_ESCAPE) Or ystart<-2000.0 glMatrixMode GL_PROJECTION glLoadidentity() glOrtho 0,800,600,0,-1,1 SetScale(1,1) SetColor 255,255,255 SetAlpha 1.0 glMatrixMode GL_MODELVIEW glLoadIdentity SetOrigin 0,0 glDisable(GL_FOG) 'glPopmatrix() Cls Flip
OK- snapped out of the bout of laziness. This is tested. Just need the font in the same dir.
Thanks. I've used this for some awesome in-game transitions...fade out and spin, then spin back in real fast :)
One more thing - how do I set the origin of rotation? opengl noob speaking here. Thanks.
One more thing - how do I set the origin of rotation? opengl noob speaking here. Thanks.
Erm - I'm an OGL noob, too. Did most of this by 'fiddling about'. Look at the GLtranslatef() and the GLrotatef() in the main loop - these tell OpenGL to translate so far along the x,y,z axes [GLtranslate (distx,disty,distz)] then from that centre rotate n degrees about vector 'A' [GLrotatef(angle,Ax,Ay,Az)] - before drawing the text - try fiddling with these.
Yes, that's all well and good, but then how do I move the camera back before rendering?
You don't - you move the scene forward using a GLtranslatef().