Suffering from poor Frames Per Second? Use smaller textures!
Come see : http://modules.indiepath.com/forum/viewforum.php?f=7
Come see : http://modules.indiepath.com/forum/viewforum.php?f=7
Graphics3D 640, 480, 0, 2 AmbientLight 255, 255, 255 Dim t(4) Dim s(4) Const T_SIZE = 2048 AppTitle "Single Surface Texture Sheet" tex = CreateTexture(T_SIZE*2, T_SIZE*2) SetBuffer TextureBuffer(tex) Color 255, 0, 0 Rect 0, 0, T_SIZE, T_SIZE, True Color 0, 0, 255 Rect 0, T_SIZE, T_SIZE, T_SIZE, True Color 0, 255, 0 Rect T_SIZE, 0, T_SIZE, T_SIZE, True Color 255, 0, 255 Rect T_SIZE, T_SIZE, T_SIZE, T_SIZE, True SetBuffer BackBuffer() t(0) = CreateMesh() s(0) = CreateSurface(t(0)) EntityTexture t(0), tex For i = 1 To 4 Select i Case 1 v1 = AddVertex(s(0), -1 + i*3, 1, 0, 0, 0) v2 = AddVertex(s(0), 1 + i*3, 1, 0, 0.5, 0) v3 = AddVertex(s(0), -1 + i*3, -1, 0, 0, 0.5) v4 = AddVertex(s(0), 1 + i*3, -1, 0, 0.5, 0.5) Case 2 v1 = AddVertex(s(0), -1 + i*3, 1, 0, 0.5, 0) v2 = AddVertex(s(0), 1 + i*3, 1, 0, 1, 0) v3 = AddVertex(s(0), -1 + i*3, -1, 0, 0.5, 0.5) v4 = AddVertex(s(0), 1 + i*3, -1, 0, 1, 0.5) Case 3 v1 = AddVertex(s(0), -1 + i*3, 1, 0, 0, 0.5) v2 = AddVertex(s(0), 1 + i*3, 1, 0, 0.5, 0.5) v3 = AddVertex(s(0), -1 + i*3, -1, 0, 0, 1) v4 = AddVertex(s(0), 1 + i*3, -1, 0, 0.5, 1) Case 4 v1 = AddVertex(s(0), -1 + i*3, 1, 0, 0.5, 0.5) v2 = AddVertex(s(0), 1 + i*3, 1, 0, 1, 0.5) v3 = AddVertex(s(0), -1 + i*3, -1, 0, 0.5, 1) v4 = AddVertex(s(0), 1 + i*3, -1, 0, 1, 1) End Select AddTriangle(s(0), v1, v3, v4) AddTriangle(s(0), v1, v4, v2) Next cam = CreateCamera() MoveEntity cam, 2*3+1, 0, 10 TurnEntity cam, 0, 180, 0 Color 255, 255, 255 While Not KeyDown(1) m = MilliSecs() If m >= tm Then d = m - tm tm = m + 1000 fps# = Float(f) / Float(1000+d) * 1000.0 f = 0 Else f = f + 1 End If Cls RenderWorld Text 0, 0, "FPS: " + fps Flip False Wend While KeyDown(1) Wend ClearWorld AppTitle "4 Textures, 4 Surfaces" t1 = CreateTexture(T_SIZE, T_SIZE) t2 = CreateTexture(T_SIZE, T_SIZE) t3 = CreateTexture(T_SIZE, T_SIZE) t4 = CreateTexture(T_SIZE, T_SIZE) SetBuffer TextureBuffer(t1) Color 255, 0, 0 Rect 0, 0, T_SIZE, T_SIZE, True SetBuffer TextureBuffer(t2) Color 0, 0, 255 Rect 0, 0, T_SIZE, T_SIZE, True SetBuffer TextureBuffer(t3) Color 0, 255, 0 Rect 0, 0, T_SIZE, T_SIZE, True SetBuffer TextureBuffer(t4) Color 255, 0, 255 Rect 0, 0, T_SIZE, T_SIZE, True SetBuffer BackBuffer() For i = 1 To 4 t(i) = CreateMesh() s(i) = CreateSurface(t(i)) v1 = AddVertex(s(i), -1, 1, 0, 0, 0) v2 = AddVertex(s(i), 1, 1, 0, 1, 0) v3 = AddVertex(s(i), -1, -1, 0, 0, 1) v4 = AddVertex(s(i), 1, -1, 0, 1, 1) Select i Case 1 EntityTexture t(i), t1 Case 2 EntityTexture t(i), t2 Case 3 EntityTexture t(i), t3 Case 4 EntityTexture t(i), t4 End Select AddTriangle(s(i), v1, v3, v4) AddTriangle(s(i), v1, v4, v2) MoveEntity t(i), i * 3, 0, 0 Next cam = CreateCamera() MoveEntity cam, 2*3+1, 0, 10 TurnEntity cam, 0, 180, 0 Color 255, 255, 255 While Not KeyDown(1) m = MilliSecs() If m >= tm Then d = m - tm tm = m + 1000 fps# = Float(f) / Float(1000+d) * 1000.0 f = 0 Else f = f + 1 End If Cls RenderWorld Text 0, 0, "FPS: " + fps Flip False Wend
Graphics3D 640, 480, 0, 2 AmbientLight 255, 255, 255 Const T_SIZE = 2048 ; Texture size for the small textures, the sheet will be 2*T_SIZE Const NB_QUADS = 250 ; NB_QUADS is not really the number of quad, it will be NB_QUADS*4 Dim t(4*NB_QUADS) Dim s(4*NB_QUADS) AppTitle "Single Surface Texture Sheet" tex = CreateTexture(T_SIZE*2, T_SIZE*2) SetBuffer TextureBuffer(tex) Color 255, 0, 0 Rect 0, 0, T_SIZE, T_SIZE, True Color 0, 0, 255 Rect 0, T_SIZE, T_SIZE, T_SIZE, True Color 0, 255, 0 Rect T_SIZE, 0, T_SIZE, T_SIZE, True Color 255, 0, 255 Rect T_SIZE, T_SIZE, T_SIZE, T_SIZE, True SetBuffer BackBuffer() t(0) = CreateMesh() s(0) = CreateSurface(t(0)) EntityTexture t(0), tex For j = 0 To NB_QUADS For i = 1 To 4 Select i Case 1 v1 = AddVertex(s(0), -1 + i*3, 1, 0, 0, 0) v2 = AddVertex(s(0), 1 + i*3, 1, 0, 0.5, 0) v3 = AddVertex(s(0), -1 + i*3, -1, 0, 0, 0.5) v4 = AddVertex(s(0), 1 + i*3, -1, 0, 0.5, 0.5) Case 2 v1 = AddVertex(s(0), -1 + i*3, 1, 0, 0.5, 0) v2 = AddVertex(s(0), 1 + i*3, 1, 0, 1, 0) v3 = AddVertex(s(0), -1 + i*3, -1, 0, 0.5, 0.5) v4 = AddVertex(s(0), 1 + i*3, -1, 0, 1, 0.5) Case 3 v1 = AddVertex(s(0), -1 + i*3, 1, 0, 0, 0.5) v2 = AddVertex(s(0), 1 + i*3, 1, 0, 0.5, 0.5) v3 = AddVertex(s(0), -1 + i*3, -1, 0, 0, 1) v4 = AddVertex(s(0), 1 + i*3, -1, 0, 0.5, 1) Case 4 v1 = AddVertex(s(0), -1 + i*3, 1, 0, 0.5, 0.5) v2 = AddVertex(s(0), 1 + i*3, 1, 0, 1, 0.5) v3 = AddVertex(s(0), -1 + i*3, -1, 0, 0.5, 1) v4 = AddVertex(s(0), 1 + i*3, -1, 0, 1, 1) End Select AddTriangle(s(0), v1, v3, v4) AddTriangle(s(0), v1, v4, v2) Next Next cam = CreateCamera() MoveEntity cam, 2*3+1, 0, 10 TurnEntity cam, 0, 180, 0 Color 255, 255, 255 While Not KeyDown(1) m = MilliSecs() If m >= tm Then d = m - tm tm = m + 1000 fps# = Float(f) / Float(1000+d) * 1000.0 f = 0 Else f = f + 1 End If Cls RenderWorld Text 0, 0, "FPS: " + fps Text 0, 15, "Tris: " + TrisRendered() Flip False Wend While KeyDown(1) Wend ClearWorld AppTitle "4 Textures, 4 Surfaces" t1 = CreateTexture(T_SIZE, T_SIZE) t2 = CreateTexture(T_SIZE, T_SIZE) t3 = CreateTexture(T_SIZE, T_SIZE) t4 = CreateTexture(T_SIZE, T_SIZE) SetBuffer TextureBuffer(t1) Color 255, 0, 0 Rect 0, 0, T_SIZE, T_SIZE, True SetBuffer TextureBuffer(t2) Color 0, 0, 255 Rect 0, 0, T_SIZE, T_SIZE, True SetBuffer TextureBuffer(t3) Color 0, 255, 0 Rect 0, 0, T_SIZE, T_SIZE, True SetBuffer TextureBuffer(t4) Color 255, 0, 255 Rect 0, 0, T_SIZE, T_SIZE, True SetBuffer BackBuffer() For j = 0 To NB_QUADS For i = 1 To 4 t(j*4+i) = CreateMesh() s(j*4+i) = CreateSurface(t(j*4+i)) v1 = AddVertex(s(j*4+i), -1, 1, 0, 0, 0) v2 = AddVertex(s(j*4+i), 1, 1, 0, 1, 0) v3 = AddVertex(s(j*4+i), -1, -1, 0, 0, 1) v4 = AddVertex(s(j*4+i), 1, -1, 0, 1, 1) Select i Case 1 EntityTexture t(j*4+i), t1 Case 2 EntityTexture t(j*4+i), t2 Case 3 EntityTexture t(j*4+i), t3 Case 4 EntityTexture t(j*4+i), t4 End Select AddTriangle(s(j*4+i), v1, v3, v4) AddTriangle(s(j*4+i), v1, v4, v2) MoveEntity t(j*4+i), i * 3, 0, 0 Next Next cam = CreateCamera() MoveEntity cam, 2*3+1, 0, 10 TurnEntity cam, 0, 180, 0 Color 255, 255, 255 While Not KeyDown(1) m = MilliSecs() If m >= tm Then d = m - tm tm = m + 1000 fps# = Float(f) / Float(1000+d) * 1000.0 f = 0 Else f = f + 1 End If Cls RenderWorld Text 0, 0, "FPS: " + fps Text 0, 15, "Tris: " + TrisRendered() Flip False Wend
Const T_SIZE = 64 ; Texture size for the small textures, the sheet will be 2*T_SIZE Const NB_QUADS = 500 ; NB_QUADS is not really the number of quad, it will be NB_QUADS*4
Const T_SIZE = 64 ; Texture size for the small textures, the sheet will be 2*T_SIZE Const NB_QUADS = 2000 ; NB_QUADS is not really the number of quad, it will be NB_QUADS*4