#Region Project Attributes
#ApplicationLabel: B4A Example
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: landscape
#CanInstallToExternalStorage: False
#End Region
#Region Activity Attributes
#FullScreen: true
#IncludeTitle: false
#End Region
Sub Process_Globals
Dim OpenGL_timer As Timer
Dim triangle_c As Int
Dim triangle(200,12) As Float '012-x0y0z0 345-x1y1z1 678-x2y2z2 ,9,10,11 RGB
End Sub
Sub Globals
Dim OpenGL As GLSurfaceView
Dim seekbar As SeekBar
Dim touchpanel As Panel
Dim touchpanel_data(10) As Float
Dim lbl As Label
Dim zoom_distance As Float
End Sub
Sub Activity_Create(FirstTime As Boolean)
'touchpanel
touchpanel.Initialize("TouchPanel")
Activity.AddView(touchpanel, 0,0,100%x,100%y)
'opengl, opengltimer
OpenGL.Initialize(OpenGL.RENDERMODE_WHEN_DIRTY, "opengl")
Activity.AddView(OpenGL, 0,0,100%x,100%y)
OpenGL_timer.Initialize("opengl_render",60)
OpenGL_timer.Enabled = True
'label
lbl.Initialize("lbl") ' Az "lbl" az események azonosítására szolgál
lbl.TextSize = 20
lbl.TextColor = Colors.argb(200,255,255,255)
lbl.Color = Colors.argb(100,255,0,0)
Activity.AddView(lbl, 0, 0, Activity.width, 50dip)
'seekbar
seekbar.Initialize("seekbar")
seekbar.Max = 100
seekbar.Value = 50
Activity.AddView(seekbar, 0, Activity.Height - 50dip, Activity.Width, 50dip) ' SeekBar elhelyezése az alján
For t = 0 To 10
add_triangle(randpos,randpos,randpos,randpos,randpos,randpos,randpos,randpos,randpos,Rnd(0,150),Rnd(0,150),Rnd(0,150))
Next
End Sub
Sub randpos As Float
Return Rnd(0,1000)/1000-.5
End Sub
Sub add_triangle(x0 As Float,y0 As Float,z0 As Float,x1 As Float,y1 As Float,z1 As Float,x2 As Float,y2 As Float,z2 As Float,colr As Float,colg As Float,colb As Float)
triangle(triangle_c,0) = x0
triangle(triangle_c,1) = y0
triangle(triangle_c,2) = z0
triangle(triangle_c,3) = x1
triangle(triangle_c,4) = y1
triangle(triangle_c,5) = z1
triangle(triangle_c,6) = x2
triangle(triangle_c,7) = y2
triangle(triangle_c,8) = z2
triangle(triangle_c,9) = colr/255
triangle(triangle_c,10) = colg/255
triangle(triangle_c,11) = colb/255
triangle_c = triangle_c+1
End Sub
Sub TouchPanel_Touch (Action As Int, X As Float, Y As Float)
If Action = Activity.ACTION_MOVE Then
touchpanel_data(2) = touchpanel_data(2)+(touchpanel_data(0)-x)*.15
touchpanel_data(3) = touchpanel_data(3)+(touchpanel_data(1)-y)*.15
End If
touchpanel_data(0) = X
touchpanel_data(1) = y
End Sub
Sub opengl_render_tick
OpenGL.RequestRender
lbl.Text = "ANG1:"& NumberFormat(touchpanel_data(2), 1, 1) &" ANG2:" & NumberFormat(touchpanel_data(3), 1, 1) & " DISTANCE:"& NumberFormat(Abs(zoom_distance), 1, 1)
lbl.Invalidate
End Sub
Sub opengl_draw(gl As GL1)
gl.glDisableClientState(gl.GL_VERTEX_ARRAY)
gl.glDisableClientState(gl.GL_TEXTURE_COORD_ARRAY)
gl.glDisableClientState(gl.GL_NORMAL_ARRAY)
gl.glClearColor(.8, .8, .8, 1)
gl.glClear(Bit.Or(gl.GL_COLOR_BUFFER_BIT, gl.GL_DEPTH_BUFFER_BIT))
gl.glEnable(gl.GL_NORMALIZE)
gl.glLoadIdentity
gl.glTranslatef(0,0,zoom_distance)
gl.glrotatef(-touchpanel_data(3),1,0,0)
gl.glrotatef(-touchpanel_data(2),0,1,0)
gl.glFrontFace(gl.GL_CCW)
gl.glEnableClientState(gl.GL_VERTEX_ARRAY)
gl.glEnableClientState(gl.GL_VERTEX_ARRAY)
gl.glEnable(gl.GL_DEPTH_TEST)
gl.glDepthFunc(gl.GL_LEQUAL)
gl.glDepthMask(True)
gl.glDisable(gl.GL_BLEND)
gl.glPushMatrix
Dim vertices(9) As Float
For at = 0 To triangle_c-1
For t = 0 To 8:vertices(t) = triangle(at,t):Next
gl.glVertexPointerf(3, vertices)
gl.glColor4f(triangle(at,9),triangle(at,10),triangle(at,11), 1) ' RGBA = Red ' Set the color to red for the triangle
gl.glDrawArrays(gl.GL_TRIANGLES, 0, 3)
Next
gl.glPopMatrix
gl.glDisableClientState(gl.GL_VERTEX_ARRAY)
End Sub
Sub opengl_SurfaceChanged(gl As GL1, width As Int, height As Int)
gl.glViewport(0, 0, width, height)
gl.glMatrixMode(gl.GL_PROJECTION)
gl.gluPerspective(60,width/height,0.01,6)
gl.glMatrixMode(gl.GL_MODELVIEW)
End Sub
Sub SeekBar_ValueChanged (Value As Int, UserChanged As Boolean)
zoom_distance = -(100-Value)*.05
End Sub