Basic 3D Screen

BlitzMax Forums/BlitzMax Beginners Area/Basic 3D Screen

Strict

Const Width=1024,Height=768

bglCreateContext(Width, Height, 32, 0,BGL_BACKBUFFER|BGL_DEPTHBUFFER)

glViewport(0,0,Width,Height)

glMatrixMode GL_PROJECTION
gluPerspective 45.0,Float(Width)/Float(Height),1.0,1000.0

Type color
 Field r#,g#,b#,a#
End Type

Type vec3
 Field x#,y#,z#
End Type

Local ambient:color = New color
ambient.r = 0.2
ambient.g = 0.5
ambient.b = 0.7

Local position:vec3 = New vec3
position.x = 1.0
position.y = 3.0
position.z = 5.0

glLightfv GL_LIGHT0, GL_AMBIENT, Varptr(ambient.r)
glLightfv GL_LIGHT0, GL_POSITION, Varptr(position.x)
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);

glShadeModel(GL_SMOOTH)
glEnable(GL_DEPTH_TEST)
glEnable(GL_CULL_FACE)

glMatrixMode GL_MODELVIEW    
glTranslatef(0.0,0.0,-10.0)

While Not KeyHit(KEY_ESCAPE)

 glRotatef(0.03,0,1,0)
 glRotatef(0.02,1,0,0)
 glRotatef(-0.01,0,0,1)

 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

 glBegin(GL_QUADS)

  'Front
  glNormal3f( 0.0,0.0,-1.0)
  glVertex3f(-1.0, 1.0,-1.0)
  glVertex3f( 1.0, 1.0,-1.0)
  glVertex3f( 1.0,-1.0,-1.0)
  glVertex3f(-1.0,-1.0,-1.0)

  'Back
  glNormal3f( 0.0, 0.0, 1.0)
  glVertex3f(-1.0, 1.0, 1.0)
  glVertex3f(-1.0,-1.0, 1.0)
  glVertex3f( 1.0,-1.0, 1.0)
  glVertex3f( 1.0, 1.0, 1.0)

  'Right
  glNormal3f( 1.0, 0.0, 0.0)
  glVertex3f( 1.0, 1.0,-1.0)
  glVertex3f( 1.0, 1.0, 1.0)
  glVertex3f( 1.0,-1.0, 1.0)
  glVertex3f( 1.0,-1.0,-1.0)

  'Left
  glNormal3f(-1.0, 0.0, 0.0)
  glVertex3f(-1.0, 1.0,-1.0)
  glVertex3f(-1.0,-1.0,-1.0)
  glVertex3f(-1.0,-1.0, 1.0)
  glVertex3f(-1.0, 1.0, 1.0)

  'Top
  glNormal3f( 0.0, 1.0, 0.0)
  glVertex3f(-1.0, 1.0,-1.0)
  glVertex3f(-1.0, 1.0, 1.0)
  glVertex3f( 1.0, 1.0, 1.0)
  glVertex3f( 1.0, 1.0,-1.0)

  'Bottom
  glNormal3f( 0.0,-1.0, 0.0)
  glVertex3f( 1.0,-1.0, 1.0)
  glVertex3f(-1.0,-1.0, 1.0)
  glVertex3f(-1.0,-1.0,-1.0)
  glVertex3f( 1.0,-1.0,-1.0)

 glEnd()

 bglSwapBuffers()

Wend



End