PDA

View Full Version : NeHe Lesson 05



matthew
16-03-2007, 01:10
NeHe Lesson 05 will Display a Coloured Pyramid and Cube and Rotate them.



' NeHe Lesson 05

uses "UI" ' MessageBox Functions
uses "TBGL" ' thinBASIC OpenGL Library

' Create MessageBox
dim fullScreen as long
fullScreen = msgbox(0, "Would you like to Run in Fullscreen Mode?", %MB_YESNO or %MB_ICONINFORMATION, "Start FullScreen?")

select case fullScreen

' Create FullScreen Display, Return Handle.
case %IDYES
dim hWnd as dword
hWnd = tbgl_createwindowex("", 1024, 768, 32, 1)

' Create Windowed Display, Return Handle.
case %IDNO
dim hWnd as dword
hWnd = tbgl_createwindowex("NeHe Lesson 05 - Press 'Esc' to Quit", 640, 480, 16, 0)

end select

' Declare Variables here

dim rtri as single ' Pyramid Rotation
dim rquad as single ' Cube Rotation

dim frameRate as integer ' Timing Variable

tbgl_showwindow ' Show Display

TBGL_GetAsyncKeyState(-1) ' Reset all Keys

' Start Main Loop
while tbgl_iswindow(hWnd)

frameRate = tbgl_getframerate

tbgl_clearframe ' Clear Display
tbgl_camera 0,0,1,0,0,0 ' Default Camera, View From 0,0,1 To 0,0,0.

tbgl_translate -1.5, 0.0, -6.0 ' Move Left 1.5 Units, Into the Screen 6 Units
tbgl_rotate rtri, 0.0, 1.0, 0.0 ' Y-Axis Rotation

tbgl_beginpoly %GL_TRIANGLES ' Drawing Using Triangles

' Front Triangle
TBGL_Color 255, 0, 0 ' Red
TBGL_Vertex 0.0, 1.0, 0.0 ' Top
TBGL_Color 0, 255, 0 ' Green
TBGL_Vertex -1.0, -1.0, 1.0 ' Bottom Left
TBGL_Color 0, 0, 255 ' Blue
TBGL_Vertex 1.0, -1.0, 1.0 ' Bottom Right

' Right Triangle
TBGL_Color 255, 0, 0 ' Red
TBGL_Vertex 0.0, 1.0, 0.0 ' Top
TBGL_Color 0, 0, 255 ' Blue
TBGL_Vertex 1.0, -1.0, 1.0 ' Bottom Left
TBGL_Color 0, 255, 0 ' Green
TBGL_Vertex 1.0, -1.0, -1.0 ' Bottom Right

' Back Triangle
TBGL_Color 255, 0, 0 ' Red
TBGL_Vertex 0.0, 1.0, 0.0 ' Top
TBGL_Color 0, 255, 0 ' Green
TBGL_Vertex 1.0, -1.0, -1.0 ' Bottom Left
TBGL_Color 0, 0, 255 ' Blue
TBGL_Vertex -1.0, -1.0, -1.0 ' BottomRight

' Left Triangle
TBGL_Color 255, 0, 0 ' Red
TBGL_Vertex 0.0, 1.0, 0.0 ' Top
TBGL_Color 0, 255, 0 ' Green
TBGL_Vertex -1.0, -1.0, -1.0 ' Bottom Left
TBGL_Color 0, 0, 255 ' Blue
TBGL_Vertex -1.0, -1.0, 1.0 ' Bottom Right

TBGL_EndPoly

tbgl_resetmatrix ' Reset Current Matrix
tbgl_camera 0,0,1,0,0,0 ' Default Camera, View From 0,0,1 To 0,0,0.
TBGL_Translate 1.5, 0.0, -7.0 ' Move Right 1.5 Units, Into the Screen 7 Units.
TBGL_Rotate rquad, 1.0, 1.0, 1.0 ' X,Y & Z Axis Rotations.

TBGL_BeginPoly %GL_QUADS ' Drawing using Quads

' Top Quad
TBGL_Color 0, 255, 0 ' Green
TBGL_Vertex 1.0, 1.0, -1.0 ' Top Right
TBGL_Vertex -1.0, 1.0, -1.0 ' Top Left
TBGL_Vertex -1.0, 1.0, 1.0 ' Bottom Left
TBGL_Vertex 1.0, 1.0, 1.0 ' Bottom Right

' Bottom Quad
TBGL_Color 255, 127, 0 ' Orange
TBGL_Vertex 1.0, -1.0, 1.0 ' Top Right
TBGL_Vertex -1.0, -1.0, 1.0 ' Top left
TBGL_Vertex -1.0, -1.0, -1.0 ' Bottom Left
TBGL_Vertex 1.0, -1.0, -1.0 ' Bottom Right

' Front Quad
TBGL_Color 255, 0, 0 ' Red
TBGL_Vertex 1.0, 1.0, 1.0 ' Top Right
TBGL_Vertex -1.0, 1.0, 1.0 ' Top Left
TBGL_Vertex -1.0, -1.0, 1.0 ' Bottom Left
TBGL_Vertex 1.0, -1.0, 1.0 ' Bottom Right

' Back Quad
TBGL_Color 255, 255, 0 ' Yellow
TBGL_Vertex 1.0, -1.0, -1.0 ' Bottom Left
TBGL_Vertex -1.0, -1.0, -1.0 ' Bottom Right
TBGL_Vertex -1.0, 1.0, -1.0 ' Top Right
TBGL_Vertex 1.0, 1.0, -1.0 ' Top Left

' Left Quad
TBGL_Color 0, 0, 255 ' Blue
TBGL_Vertex -1.0, 1.0, -1.0 ' Top Right
TBGL_Vertex -1.0, -1.0, -1.0 ' Top Left
TBGL_Vertex -1.0, -1.0, 1.0 ' Bottom Left
TBGL_Vertex -1.0, 1.0, 1.0 ' Bottom Right

' Right Quad
TBGL_Color 255, 0, 255 ' Violet
TBGL_Vertex 1.0, 1.0, -1.0 ' Top Right
TBGL_Vertex 1.0, 1.0, 1.0 ' Top Left
TBGL_Vertex 1.0, -1.0, 1.0 ' Bottom Left
TBGL_Vertex 1.0, -1.0, -1.0 ' Bottom Right

TBGL_EndPoly

rtri += ( 36.0 / frameRate ) ' Increase Triangle Rotation
rquad -= ( 27.0 / frameRate ) ' Increase Quad Rotation

tbgl_drawframe ' Display anything

if tbgl_getasynckeystate(%VK_ESCAPE) then exit while

wend

tbgl_destroywindow ' Closes Display


Update
This Lesson was updated on 29th June 2007 when you Run the Application it will now ask you whether you want to use a FullScreen or Windowed Display.

It also uses 'tbgl_getframerate' to Regulate Speed on different Graphics Cards.