Hi,
I added some funky stuff :) The ability to use the Max2D commands in combination with DreiD, very cool. Only change you need to make to your source code is to use Flip and EndGraphics instead of the TDreiDe equivalents.
Here's the modified DreiDe.bmx:
And an example:
I slowed down the example because it's much too fast on my machine :)
I added some funky stuff :) The ability to use the Max2D commands in combination with DreiD, very cool. Only change you need to make to your source code is to use Flip and EndGraphics instead of the TDreiDe equivalents.
Here's the modified DreiDe.bmx:
Strict Module Pub.DreiDe ModuleInfo "Version: 2.31 Edited" ModuleInfo "Author: Oliver Skawronek" ModuleInfo "Edited by: Mikkel Fredborg" ModuleInfo "License: Public Domain" Import Brl.Max2D Import Brl.GLMax2D Import Pub.Glew ?Linux Import "-lX11" Import "-lXxf86vm" ? Import Brl.BlitzGL Import Brl.System Import "HardwareInfo.bmx" Import "Entity.bmx" Import "Pivot.bmx" Import "Camera.bmx" Import "Mesh.bmx" Import "Surface.bmx" Import "Material.bmx" Import "Texture.bmx" Import "3DSLoader.bmx" Type TDreiDe Function Graphics3D:Int(Width:Int, Height:Int, Depth:Int=0, Hertz:Int=60, .. Fullscreen:Int=True) Local Flags:Int ' Create Window + RenderContext SetGraphicsDriver GLMax2DDriver(),GRAPHICS_BACKBUFFER|GRAPHICS_DEPTHBUFFER If Fullscreen Graphics(Width,Height,Depth,Hertz|NOSYNC) Else Graphics(Width,Height,0,Hertz|NOSYNC) EndIf ' Init OpenGL GlewInit() ' Save current Screen Resolution THardwareInfo.ScreenWidth = Width THardwareInfo.ScreenHeight = Height THardwareInfo.ScreenDepth = Depth THardwareInfo.Fullscreen = Fullscreen ' Init DreiDe TEntity.List = CreateList() TPivot.List = CreateList() TCamera.List = CreateList() TMesh.List = CreateList() TSurface.List = CreateList() TMaterial.List = CreateList() TTexture.List = CreateList() ' Get HardwareExtensions- and Limits THardwareInfo.GetInfo() ' Enable Vertex- And Elementarrays glEnableClientState(GL_VERTEX_ARRAY) glEnableClientState(GL_NORMAL_ARRAY) glEnableClientState(GL_COLOR_ARRAY) ' Enable seperate Specularcolor glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR) ' Display a blank screen glClear(GL_COLOR_BUFFER_BIT) Flip Return True End Function Function UseMax2D() Local x,y,w,h GetViewport(x,y,w,h) glDisable(GL_LIGHTING) glDisable(GL_DEPTH_TEST) glDisable(GL_SCISSOR_TEST) glDisable(GL_FOG) glDisable(GL_CULL_FACE) glMatrixMode GL_TEXTURE glLoadIdentity glMatrixMode GL_PROJECTION glLoadIdentity glOrtho 0,GraphicsWidth(),GraphicsHeight(),0,-1,1 glMatrixMode GL_MODELVIEW glLoadIdentity SetViewport x,y,w,h ' ' Clear textures For Local Layer = 0 Until THardwareInfo.MaxTextures glActiveTexture(GL_TEXTURE0+Layer) glDisable(GL_TEXTURE_CUBE_MAP) glDisable(GL_TEXTURE_GEN_S) glDisable(GL_TEXTURE_GEN_T) glDisable(GL_TEXTURE_GEN_R) glDisable(GL_TEXTURE_2D) Next ' ' Activate texture layer 0 glActiveTexture(GL_TEXTURE0) ' ' To reset states! DrawRect -10,-10,5,5 EndFunction Function DisplayStatus() Print "DreiDe Statusinfo:" Print "" ' Display Screeninfo Print "Screeninfo: " Print " - Screen-Width: "+THardwareInfo.ScreenWidth Print " - Screen-Height: "+THardwareInfo.ScreenHeight Print " - Screen-Depth: "+THardwareInfo.ScreenDepth Print " - Fullscreen: "+THardwareInfo.Fullscreen Print "" ' Display Memoryinfo Print "Memoryinfo: " Print " - Allocated: "+MemAlloced()+" Bytes" Print " - Usage: "+MemUsage()+" Bytes" Print "" ' Display Number of Objects Print "Number of objects:" Print " - Entitys: "+TEntity.List.Count() Print " - Pivots: "+TPivot.List.Count() Print " - Cameras: "+TCamera.List.Count() Print " - Meshs: "+TMesh.List.Count() Print " - Surfaces: "+TSurface.List.Count() Print " - Materials: "+TMaterial.List.Count() Print " - Textures: "+TTexture.List.Count() Print "" Print "- Ready -" End Function End Type
And an example:
Strict Rem Use Key-ESC to exit End Rem Framework Pub.DreiDe Import Brl.JPGLoader Import Brl.Random Global Textures : TTexture[3] Global Pixmap : TPixmap Global Material : TMaterial Global Mesh : TMesh Global Camera : TCamera TDreiDe.Graphics3D(640, 480, 0, 0, False) ' Layer 0 Textures[0] = New TTexture Textures[0].AddRenderMode(DDD_TEXTURE_MIPMAP) Textures[0].SetBlendMode(DDD_TEXTURE_REPLACE) Pixmap = LoadPixmap("media\layer0.jpg") Textures[0].SetPixmap(Pixmap) ' Layer 1 Textures[1] = New TTexture Textures[1].AddRenderMode(DDD_TEXTURE_MIPMAP) Textures[1].SetBlendMode(DDD_TEXTURE_BLEND) Pixmap = LoadPixmap("media\layer1.jpg") Textures[1].SetPixmap(Pixmap) ' Layer 2 Textures[2] = New TTexture Textures[2].AddRenderMode(DDD_TEXTURE_MIPMAP) Textures[2].SetBlendMode(DDD_TEXTURE_ADD) Pixmap = LoadPixmap("media\layer2.jpg") Textures[2].SetPixmap(Pixmap) Pixmap = Null FlushMem() Material = New TMaterial Material.SetDiffuseColor(255,0,0) Material.SetTexture(Textures[0], 0) Material.SetTexture(Textures[1], 1) Material.SetTexture(Textures[2], 2) Mesh = T3DSLoader.Load("media\cube.3ds") Mesh.SetMaterial(Material) Camera = New TCamera Camera.SetPosition(0.0, 0.0, 5.0) Camera.SetClearColor(0.4, 0.6, 0.8) ' TLight-Module comming soon glEnable(GL_LIGHTING) glEnable(GL_LIGHT0) Local a:Float = 0.0 While Not KeyDown(KEY_ESCAPE) Mesh.Turn(0.0, 0.002, 0.001) Textures[1].Translate(0.0001, 0.0001) Textures[1].Turn(0.001) Textures[2].Translate(-0.0002, 0.0) Camera.Render() TDreiDe.UseMax2D() a:+ 0.01 SetScale 1,1 SetRotation 0 SetBlend ALPHABLEND SetColor 255,255,255 SetAlpha 1 DrawText "Hello from Max2D!!!",0,Sin(a)*200+240 Flip() FlushMem() Wend EndGraphics() End
I slowed down the example because it's much too fast on my machine :)