Graphics/3D/nehe/lesson05/source/nehe5.cpp

/****************************************
 *              NDS NeHe Lesson 05                      *
 *              Author: Dovoto                                  *
 ****************************************/

// include your ndslib
#include <nds.h>


int DrawGLScene();

float rtri;                             // Angle For The Triangle ( NEW )
float rquad;                    // Angle For The Quad ( NEW )

int main() {    
        
        // Setup the Main screen for 3D 
        videoSetMode(MODE_0_3D);
        
        // initialize the geometry engine
        glInit();
        
        // enable antialiasing
        glEnable(GL_ANTIALIAS);
        
        // setup the rear plane
        glClearColor(0,0,0,31); // BG must be opaque for AA to work
        glClearPolyID(63); // BG must have a unique polygon ID for AA to work
        glClearDepth(0x7FFF);
        
        // Set our viewport to be the same size as the screen
        glViewport(0,0,255,191);
        
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(70, 256.0 / 192.0, 0.1, 100);
        
        //ds specific, several attributes can be set here       
        glPolyFmt(POLY_ALPHA(31) | POLY_CULL_NONE);
        
        while (1) 
        {
                // Set the current matrix to be the model matrix
                glMatrixMode(GL_MODELVIEW);
                
                //Push our original Matrix onto the stack (save state)
                glPushMatrix(); 

                DrawGLScene();
                
                // Pop our Matrix from the stack (restore state)
                glPopMatrix(1);

                // flush to screen      
                glFlush(0);
                
                // wait for the screen to refresh
                swiWaitForVBlank();
        
        }
        
        return 0;
}

int DrawGLScene()                                                                                       // Here's Where We Do All The Drawing
{
        glLoadIdentity();                                                                       // Reset The Current Modelview Matrix
        glTranslatef(-1.5f,0.0f,-6.0f);                                         // Move Left 1.5 Units And Into The Screen 6.0
        glRotatef(rtri,0.0f,1.0f,0.0f);                                         // Rotate The Triangle On The Y axis ( NEW )
        glBegin(GL_TRIANGLES);                                                          // Start Drawing A Triangle
                glColor3f(1.0f,0.0f,0.0f);                                              // Red
                glVertex3f( 0.0f, 1.0f, 0.0f);                                  // Top Of Triangle (Front)
                glColor3f(0.0f,1.0f,0.0f);                                              // Green
                glVertex3f(-1.0f,-1.0f, 1.0f);                                  // Left Of Triangle (Front)
                glColor3f(0.0f,0.0f,1.0f);                                              // Blue
                glVertex3f( 1.0f,-1.0f, 1.0f);                                  // Right Of Triangle (Front)
                glColor3f(1.0f,0.0f,0.0f);                                              // Red
                glVertex3f( 0.0f, 1.0f, 0.0f);                                  // Top Of Triangle (Right)
                glColor3f(0.0f,0.0f,1.0f);                                              // Blue
                glVertex3f( 1.0f,-1.0f, 1.0f);                                  // Left Of Triangle (Right)
                glColor3f(0.0f,1.0f,0.0f);                                              // Green
                glVertex3f( 1.0f,-1.0f, -1.0f);                                 // Right Of Triangle (Right)
                glColor3f(1.0f,0.0f,0.0f);                                              // Red
                glVertex3f( 0.0f, 1.0f, 0.0f);                                  // Top Of Triangle (Back)
                glColor3f(0.0f,1.0f,0.0f);                                              // Green
                glVertex3f( 1.0f,-1.0f, -1.0f);                                 // Left Of Triangle (Back)
                glColor3f(0.0f,0.0f,1.0f);                                              // Blue
                glVertex3f(-1.0f,-1.0f, -1.0f);                                 // Right Of Triangle (Back)
                glColor3f(1.0f,0.0f,0.0f);                                              // Red
                glVertex3f( 0.0f, 1.0f, 0.0f);                                  // Top Of Triangle (Left)
                glColor3f(0.0f,0.0f,1.0f);                                              // Blue
                glVertex3f(-1.0f,-1.0f,-1.0f);                                  // Left Of Triangle (Left)
                glColor3f(0.0f,1.0f,0.0f);                                              // Green
                glVertex3f(-1.0f,-1.0f, 1.0f);                                  // Right Of Triangle (Left)
        glEnd();                                                                                        // Done Drawing The Pyramid

        glLoadIdentity();                                                                       // Reset The Current Modelview Matrix
        glTranslatef(1.5f,0.0f,-7.0f);                                          // Move Right 1.5 Units And Into The Screen 7.0
        glRotatef(rquad,1.0f,1.0f,1.0f);                                        // Rotate The Quad On The X axis ( NEW )
        glBegin(GL_QUADS);                                                                      // Draw A Quad
                glColor3f(0.0f,1.0f,0.0f);                                              // Set The Color To Green
                glVertex3f( 1.0f, 1.0f,-1.0f);                                  // Top Right Of The Quad (Top)
                glVertex3f(-1.0f, 1.0f,-1.0f);                                  // Top Left Of The Quad (Top)
                glVertex3f(-1.0f, 1.0f, 1.0f);                                  // Bottom Left Of The Quad (Top)
                glVertex3f( 1.0f, 1.0f, 1.0f);                                  // Bottom Right Of The Quad (Top)
                glColor3f(1.0f,0.5f,0.0f);                                              // Set The Color To Orange
                glVertex3f( 1.0f,-1.0f, 1.0f);                                  // Top Right Of The Quad (Bottom)
                glVertex3f(-1.0f,-1.0f, 1.0f);                                  // Top Left Of The Quad (Bottom)
                glVertex3f(-1.0f,-1.0f,-1.0f);                                  // Bottom Left Of The Quad (Bottom)
                glVertex3f( 1.0f,-1.0f,-1.0f);                                  // Bottom Right Of The Quad (Bottom)
                glColor3f(1.0f,0.0f,0.0f);                                              // Set The Color To Red
                glVertex3f( 1.0f, 1.0f, 1.0f);                                  // Top Right Of The Quad (Front)
                glVertex3f(-1.0f, 1.0f, 1.0f);                                  // Top Left Of The Quad (Front)
                glVertex3f(-1.0f,-1.0f, 1.0f);                                  // Bottom Left Of The Quad (Front)
                glVertex3f( 1.0f,-1.0f, 1.0f);                                  // Bottom Right Of The Quad (Front)
                glColor3f(1.0f,1.0f,0.0f);                                              // Set The Color To Yellow
                glVertex3f( 1.0f,-1.0f,-1.0f);                                  // Top Right Of The Quad (Back)
                glVertex3f(-1.0f,-1.0f,-1.0f);                                  // Top Left Of The Quad (Back)
                glVertex3f(-1.0f, 1.0f,-1.0f);                                  // Bottom Left Of The Quad (Back)
                glVertex3f( 1.0f, 1.0f,-1.0f);                                  // Bottom Right Of The Quad (Back)
                glColor3f(0.0f,0.0f,1.0f);                                              // Set The Color To Blue
                glVertex3f(-1.0f, 1.0f, 1.0f);                                  // Top Right Of The Quad (Left)
                glVertex3f(-1.0f, 1.0f,-1.0f);                                  // Top Left Of The Quad (Left)
                glVertex3f(-1.0f,-1.0f,-1.0f);                                  // Bottom Left Of The Quad (Left)
                glVertex3f(-1.0f,-1.0f, 1.0f);                                  // Bottom Right Of The Quad (Left)
                glColor3f(1.0f,0.0f,1.0f);                                              // Set The Color To Violet
                glVertex3f( 1.0f, 1.0f,-1.0f);                                  // Top Right Of The Quad (Right)
                glVertex3f( 1.0f, 1.0f, 1.0f);                                  // Top Left Of The Quad (Right)
                glVertex3f( 1.0f,-1.0f, 1.0f);                                  // Bottom Left Of The Quad (Right)
                glVertex3f( 1.0f,-1.0f,-1.0f);                                  // Bottom Right Of The Quad (Right)
        glEnd();                                                                                        // Done Drawing The Quad

        rtri+=0.2f;                                                                                     // Increase The Rotation Variable For The Triangle ( NEW )
        rquad-=0.15f;                                                                           // Decrease The Rotation Variable For The Quad ( NEW )
        return TRUE;                                                                            // Keep Going
}
 全て クラス ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義
libndsに対してMon Apr 26 23:39:49 2010に生成されました。  doxygen 1.6.3