资源简介

交互式计算机图形学 第六版 OpenGL源代码

资源截图

代码片段和文件信息

// Two-Dimensional Sierpinski Gasket       
// Generated using randomly selected vertices and bisection

#include “Angel.h“

const int NumPoints = 5000;

//----------------------------------------------------------------------------

void
init( void )
{
    vec2 points[NumPoints];

    // Specifiy the vertices for a triangle
    vec2 vertices[3] = {
        vec2( -1.0 -1.0 ) vec2( 0.0 1.0 ) vec2( 1.0 -1.0 )
    };

    // Select an arbitrary initial point inside of the triangle
    points[0] = vec2( 0.25 0.50 );

    // compute and store N-1 new points
    for ( int i = 1; i < NumPoints; ++i ) {
        int j = rand() % 3;   // pick a vertex at random

        // Compute the point halfway between the selected vertex
        //   and the previous point
        points[i] = ( points[i - 1] + vertices[j] ) / 2.0;
    }

    // Create a vertex array object
    GLuint vao;
    glGenVertexArrays( 1 &vao );
    glBindVertexArray( vao );

    // Create and initialize a buffer object
    GLuint buffer;
    glGenBuffers( 1 &buffer );
    glBindBuffer( GL_ARRAY_BUFFER buffer );
    glBufferData( GL_ARRAY_BUFFER sizeof(points) points GL_STATIC_DRAW );

    // Load shaders and use the resulting shader program
    GLuint program = InitShader( “vshader21.glsl“ “fshader21.glsl“ );
    glUseProgram( program );

    // Initialize the vertex position attribute from the vertex shader
    GLuint loc = glGetAttribLocation( program “vPosition“ );
    glEnableVertexAttribArray( loc );
    glVertexAttribPointer( loc 2 GL_FLOAT GL_FALSE 0
                           BUFFER_OFFSET(0) );

    glClearColor( 1.0 1.0 1.0 1.0 ); // white background
}

//----------------------------------------------------------------------------

void
display( void )
{
    glClear( GL_COLOR_BUFFER_BIT );     // clear the window
    glDrawArrays( GL_POINTS 0 NumPoints );    // draw the points
    glFlush();
}

//----------------------------------------------------------------------------

void
keyboard( unsigned char key int x int y )
{
    switch ( key ) {
    case 033:
        exit( EXIT_SUCCESS );
        break;
    }
}

//----------------------------------------------------------------------------

int
main( int argc char **argv )
{
    glutInit( &argc argv );
    glutInitDisplayMode( GLUT_RGBA );
    glutInitWindowSize( 512 512 );

    // If you are using freeglut the next two lines will check if 
    // the code is truly 3.2. Otherwise comment them out
    
    glutInitContextVersion( 3 2 );
    glutInitContextProfile( GLUT_CORE_PROFILE );

    glutCreateWindow( “Sierpinski Gasket“ );

    glewInit();

    init();

    glutDisplayFunc( display );
    glutKeyboardFunc( keyboard );

    glutMainLoop();
    return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         971  2011-04-13 08:54  begin.html
     文件       34381  2015-09-22 09:13  CHAPTER02_CODE.zip
     目录           0  2017-05-18 09:45  CHAPTER02_CODE\
     文件        2752  2010-11-16 06:20  CHAPTER02_CODE\example1.cpp
     文件        3112  2010-11-16 06:20  CHAPTER02_CODE\example2.cpp
     文件        2618  2010-11-16 06:20  CHAPTER02_CODE\example3.cpp
     文件        5188  2010-11-16 06:20  CHAPTER02_CODE\example4.cpp
     文件        3886  2010-11-16 06:20  CHAPTER02_CODE\example4b.cpp
     文件        8128  2011-03-20 20:53  CHAPTER02_CODE\example5.cpp
     文件          90  2010-11-10 14:14  CHAPTER02_CODE\fshader21.glsl
     文件          89  2010-11-10 14:14  CHAPTER02_CODE\fshader22.glsl
     文件          86  2010-11-10 14:14  CHAPTER02_CODE\fshader23.glsl
     文件          84  2010-11-10 14:14  CHAPTER02_CODE\fshader24.glsl
     文件          84  2010-11-10 14:14  CHAPTER02_CODE\fshader24b.glsl
     文件          90  2010-11-10 14:14  CHAPTER02_CODE\fshader25.glsl
     目录           0  2017-05-18 09:45  CHAPTER02_CODE\MAC_VERSIONS\
     文件       18732  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\example1
     文件        2528  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\example1.cpp
     文件       18844  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\example2
     文件        3020  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\example2.cpp
     文件       26320  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\example5
     文件        8036  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\example5.cpp
     文件          64  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\fshader21.glsl
     文件          63  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\fshader22.glsl
     文件          63  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\fshader25.glsl
     文件         197  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\Makefile
     文件          72  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\vshader21.glsl
     文件          72  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\vshader22.glsl
     文件         101  2011-03-21 19:05  CHAPTER02_CODE\MAC_VERSIONS\vshader25.glsl
     文件        1020  2010-11-07 19:23  CHAPTER02_CODE\Makefile
     文件         716  2011-03-01 17:15  CHAPTER02_CODE\READEME
............此处省略150个文件信息

评论

共有 条评论