#Region Module Attributes
#FullScreen: False
#IncludeTitle: True
#ApplicationLabel: PhotoCube
#VersionCode: 1
#VersionName:
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False
#End Region
Sub Process_Globals
Dim Timer1 As Timer
End Sub
Sub Globals
Dim glsv As GLSurfaceView
Dim verts2() As Float
Dim texcoords() As Float
Dim tex(6) As Int
Dim bm(6) As Bitmap
Dim rot As Float
Dim dosetup As Boolean
End Sub
Sub Activity_Create(FirstTime As Boolean)
' OpenGL display setup
glsv.Initialize(glsv.RENDERMODE_WHEN_DIRTY, "glsv")
Activity.Initialize("")
Activity.Color=Colors.RGB(140,100,90)
Activity.AddView(glsv,10,10,Activity.Width-20,78%y)
' listview setup
dosetup=True
End Sub
Sub Activity_Resume
glsv.Resume
Timer1.Initialize("Timer1", 40)
Timer1.Enabled = True
End Sub
Sub Activity_Pause (UserClosed As Boolean)
glsv.Pause
Timer1.Enabled = False
End Sub
Sub Timer1_Tick
rot = rot + 1.5
glsv.RequestRender
End Sub
Sub glsv_Draw(gl As GL1)
Nehe06(gl)
End Sub
' ===== NEHE 06 - BLENDING =======
Sub Nehe06(gl As GL1)
If dosetup=True Then
bm(0).Initialize(File.DirAssets,"pluto.jpg")
bm(1).Initialize(File.DirAssets,"glass.png")
bm(2).Initialize(File.DirAssets,"aacube1.png")
bm(3).Initialize(File.DirAssets,"stitch.jpg")
bm(4).Initialize(File.DirAssets,"woodcrate128.png")
bm(5).Initialize(File.DirAssets,"b4x.jpg")
Dim imgWidth As Int = bm(0).Width
Dim imgHeight As Int = bm(0).Height
Dim faceWidth As Float = 2.0f
Dim faceHeight As Float = 2.0f
If imgWidth > imgHeight Then
faceHeight = faceHeight * imgHeight / imgWidth
Else
faceWidth = faceWidth * imgWidth / imgHeight
End If
Dim faceLeft As Float = -1* faceWidth / 2
Dim faceRight As Float = -1 * faceLeft
Dim faceTop As Float = faceHeight / 2
Dim faceBottom As Float = -1 * faceTop
verts2 = Array As Float(faceLeft, faceBottom, 0.0f , faceRight, faceBottom, 0.0f, faceLeft, faceTop, 0.0f, faceRight, faceTop, 0.0f, _
faceLeft, faceBottom, 0.0f , faceRight, faceBottom, 0.0f, faceLeft, faceTop, 0.0f, faceRight, faceTop, 0.0f, _
faceLeft, faceBottom, 0.0f , faceRight, faceBottom, 0.0f, faceLeft, faceTop, 0.0f, faceRight, faceTop, 0.0f, _
faceLeft, faceBottom, 0.0f , faceRight, faceBottom, 0.0f, faceLeft, faceTop, 0.0f, faceRight, faceTop, 0.0f, _
faceLeft, faceBottom, 0.0f , faceRight, faceBottom, 0.0f, faceLeft, faceTop, 0.0f, faceRight, faceTop, 0.0f, _
faceLeft, faceBottom, 0.0f , faceRight, faceBottom, 0.0f, faceLeft, faceTop, 0.0f, faceRight, faceTop, 0.0f )
texcoords = Array As Float(0.0f,1.0f,1.0f,1.0f,0.0f,0.0f,1.0f,0.0f , _
0.0f,1.0f,1.0f,1.0f,0.0f,0.0f,1.0f,0.0f , _
0.0f,1.0f,1.0f,1.0f,0.0f,0.0f,1.0f,0.0f , _
0.0f,1.0f,1.0f,1.0f,0.0f,0.0f,1.0f,0.0f , _
0.0f,1.0f,1.0f,1.0f,0.0f,0.0f,1.0f,0.0f , _
0.0f,1.0f,1.0f,1.0f,0.0f,0.0f,1.0f,0.0f)
gl.glGenTextures(6,tex,0)
For i = 0 To 5
tex(i) = i
gl.glBindTexture(gl.GL_TEXTURE_2D,tex(i))
gl.glTexImage2D(gl.GL_TEXTURE_2D,0,bm(i),0)
gl.glTexParameteri(gl.GL_TEXTURE_2D,gl.GL_TEXTURE_MIN_FILTER,gl.GL_LINEAR)
Next
dosetup=False
End If
gl.glClear(Bit.Or(gl.GL_COLOR_BUFFER_BIT, gl.GL_DEPTH_BUFFER_BIT))
gl.glLoadIdentity
gl.glTranslatef(0.0,0.0,-6.0)
gl.glRotatef(rot,1.0,1.0,1.0) ' rotate on all axes
gl.glFrontFace(gl.GL_CCW)
gl.glEnableClientState(gl.GL_VERTEX_ARRAY)
gl.glEnableClientState(gl.GL_TEXTURE_COORD_ARRAY)
gl.glVertexPointerf(3, verts2)
gl.glTexCoordPointerf(2, 0,texcoords)
gl.glPushMatrix
gl.glTranslatef(0.0f, 0.0f, 1.05f)
gl.glBindTexture(gl.GL_TEXTURE_2D,tex(0))
gl.glDrawArrays(gl.GL_TRIANGLE_STRIP,0,4)
gl.glPopMatrix
gl.glPushMatrix
gl.glRotatef(270.0f, 0.0f, 1.0f, 0.0f)
gl.glTranslatef(0.0f, 0.0f, 1.05f)
gl.glBindTexture(gl.GL_TEXTURE_2D,tex(1))
gl.glDrawArrays(gl.GL_TRIANGLE_STRIP,4,4)
gl.glPopMatrix
gl.glPushMatrix
gl.glRotatef(180.0f, 0.0f, 1.0f, 0.0f)
gl.glTranslatef(0.0f, 0.0f, 1.05f)
gl.glBindTexture(gl.GL_TEXTURE_2D,tex(2))
gl.glDrawArrays(gl.GL_TRIANGLE_STRIP,8,4)
gl.glPopMatrix
gl.glPushMatrix
gl.glRotatef(90.0f, 0.0f, 1.0f, 0.0f)
gl.glTranslatef(0.0f, 0.0f, 1.05f)
gl.glBindTexture(gl.GL_TEXTURE_2D,tex(3))
gl.glDrawArrays(gl.GL_TRIANGLE_STRIP,12,4)
gl.glPopMatrix
gl.glPushMatrix
gl.glRotatef(270.0f, 1.0f, 0.0f, 0.0f)
gl.glTranslatef(0.0f, 0.0f, 1.05f)
gl.glBindTexture(gl.GL_TEXTURE_2D,tex(4))
gl.glDrawArrays(gl.GL_TRIANGLE_STRIP,16,4)
gl.glPopMatrix
gl.glPushMatrix
gl.glRotatef(90.0f, 1.0f, 0.0f, 0.0f)
gl.glTranslatef(0.0f, 0.0f, 1.05f)
gl.glBindTexture(gl.GL_TEXTURE_2D,tex(5))
gl.glDrawArrays(gl.GL_TRIANGLE_STRIP,20,4)
gl.glPopMatrix
gl.glDisableClientState(gl.GL_VERTEX_ARRAY)
gl.glDisableClientState(gl.GL_TEXTURE_COORD_ARRAY)
End Sub
'this is the code in the sample RENDERER
Sub glsv_SurfaceCreated(gl As GL1)
gl.glClearColor(0.5f,0.0f,1.0f,0.0f) 'set the background color of the surface view
gl.glClearDepthf(1.0) 'set the depth's clear-value to farthest
gl.glEnable(gl.GL_DEPTH_TEST) 'enable depth-buffer for hidden surface removal
gl.glDepthFunc(gl.GL_LEQUAL) 'the type of depth testing to do
gl.glHint(gl.GL_PERSPECTIVE_CORRECTION_HINT,gl.GL_NICEST) 'nice perspective view
gl.glShadeModel(gl.GL_SMOOTH) 'enable smooth shading of color
gl.glDisable(gl.GL_DITHER) 'disable dithering for better performance
gl.glEnable(gl.GL_TEXTURE_2D)
dosetup=True
End Sub
Sub glsv_SurfaceChanged(gl As GL1, width As Int, height As Int)
gl.glViewport(0, 0, width, height)
gl.glMatrixMode(gl.GL_PROJECTION)
gl.glLoadIdentity
Dim ratio As Float
ratio = width/height
gl.gluPerspective(45.0,ratio,0.5,100.0)
gl.glMatrixMode(gl.GL_MODELVIEW)
dosetup=True
End Sub