Example #1
0
void OpenGL::RayCaster::CreateVertexWithColor(float x, float y, float z)
{
    // Generate vertex color RGB
    glColor3f(x, y, z);

    // Adjust texture corrdinate depnding on vertex color
    glMultiTexCoord3fARB(GL_TEXTURE1_ARB, x, y, z);

    // Draw vertex in position
    glVertex3f(x, y, z);
}
Example #2
0
void cgtk::vertex(float x, float y, float z,float *b)
{
	if(((b[1]-b[0])==0)||((b[3]-b[2])==0)||((b[5]-b[4])==0))
	{
		cout<<"bound equals 0!"<<endl;
		exit(0);
	}

	glColor3f((x-b[0])/(b[1]-b[0]),(y-b[2])/(b[3]-b[2]),(z-b[4])/(b[5]-b[4]));
	glMultiTexCoord3fARB(GL_TEXTURE1_ARB, (WINDOW_SIZE*(x-b[0])/(b[1]-b[0])), (WINDOW_SIZE*(y-b[2])/(b[3]-b[2])), (WINDOW_SIZE*(z-b[4])/(b[5]-b[4])));
	glVertex3f(x,y,z);
}
Example #3
0
void bBoard::draw_balls()
{
    glActiveTextureARB(GL_TEXTURE0_ARB);
    glEnable(GL_TEXTURE_2D);
    shadow.bind();
    for( int i=0; i<ball_size; ++i ) {
        ball[i]->draw_shadow( bVector3(0.0, 8.0, 0.0) );
    }
    
    ball_shader.enable( bShader::B_BOTH );
    ball_shader.bind( bShader::B_BOTH );
    
    glActiveTextureARB(GL_TEXTURE0_ARB);
    glEnable(GL_TEXTURE_2D);
    ball_num.bind();
    
    glActiveTextureARB(GL_TEXTURE1_ARB);
    glEnable(GL_TEXTURE_2D);
    ball_tex.bind();
    
    glMultiTexCoord3fARB( GL_TEXTURE2_ARB, 3.0f, 2.0, -2.5f );
    for( int i=0; i<ball_size; ++i ) {
		if( i > 0 ) ball[i]->set_visibility( false );
		for(int j=0; j<DESK_SEGMENTS-2; ++j ) {
			if( PointInTriangle( ball[i]->pos, 
					bVector( desk_data[j].x, desk_data[j].y ), 
					bVector( desk_data[j+1].x, desk_data[j+1].y ), 
					bVector( desk_data[j+2].x, desk_data[j+2].y ) ) ) {
				ball[i]->set_visibility( true );
				break;
			}
		}
		ball[i]->draw( &ball_shader );
    }
    
    glActiveTextureARB(GL_TEXTURE0_ARB);
    
    ball_shader.disable( bShader::B_BOTH );
    
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_TEXTURE_GEN_S);
    glDisable(GL_TEXTURE_GEN_T);
    glDisable( GL_BLEND );
    
    glEnable( GL_DEPTH_TEST );   
}
Example #4
0
void GPUVolRTV0::vertex(float x, float y, float z)
{
	glColor3f(x,y,z);
	glMultiTexCoord3fARB(GL_TEXTURE1_ARB, x, y, z);
	glVertex3f(x,y,z);
}
Example #5
0
void __stdcall glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r)
{
 if (!ARB_multitexture) return;
 glMultiTexCoord3fARB(target, s, t, r);
}
Example #6
0
void bBoard::draw()
{
    double vvx = cos(aa), vvy = sin(aa);
    
    if( idle() && camera_type == CT_FPS ) {
        GetCamera.set_eye( bVector3( ball[0]->pos.x - 2*view_r*vvx, 2.0, ball[0]->pos.y - 2*view_r*vvy ) );
        GetCamera.set_dst( bVector3( ball[0]->pos.x + 3*view_r*vvx, 0.2, ball[0]->pos.y + 3*view_r*vvy ) );
    } else {
        GetCamera.set_top_view();   
    }
    
    glDisable( GL_TEXTURE_2D );
    glColor3f( 0.0, 0.0, 0.0 );
    glBegin( GL_TRIANGLE_STRIP );
    for( int i=0; i<BOTTOM_SEGMENTS; ++i ) {
        glVertex3d( bottom_data[i].x, -0.01, bottom_data[i].y );
    }
    glEnd();
    
    if( idle() ) {
        glLineWidth( 2.0 );
        glEnable( GL_LINE_SMOOTH );
        glBegin( GL_LINES );
            glColor4d( 1.0, 0.3, 0.3, 1.0 );
            for(double k=0.0; k<4.0; k+=0.2) {
                glVertex3d( ball[0]->pos.x+vvx*k, ball[0]->radius, ball[0]->pos.y+vvy*k );
            }
        glEnd();
        glDisable( GL_BLEND );
    }
    
    glColor3f( 1.0, 1.0, 1.0 );
    
    board_shader.enable( bShader::B_FRAGMENT );
    board_shader.bind( bShader::B_FRAGMENT );
    
    glActiveTextureARB( GL_TEXTURE0_ARB );
    glEnable(GL_TEXTURE_2D);
    ball_num.bind();
    
    glMultiTexCoord3fARB( GL_TEXTURE1_ARB, 0.0f, 1.0f, 0.0f );
    glMultiTexCoord3fARB( GL_TEXTURE2_ARB, 0.0f, 0.1f, 0.0f );
    
    float lx = 0, ly = 0.3f, lz = 0;
    
    glEnable( GL_TEXTURE_2D );
    desk.bind();
    glBegin( GL_TRIANGLE_STRIP );
        glNormal3f( 0.0f, 1.0f, 0.0f );
        for( int i=0; i<DESK_SEGMENTS; ++i ) {
            glMultiTexCoord2dARB( GL_TEXTURE0_ARB, desk_data[i].tx, desk_data[i].ty ); 
            glMultiTexCoord3dARB( GL_TEXTURE3_ARB, desk_data[i].x-lx, 0.0-ly, desk_data[i].y-lz ); 
            glVertex3d( desk_data[i].x, 0.0, desk_data[i].y );
        }
    glEnd();
    
    Profiler.begin("ball_mgr::draw_bands");
    
    glActiveTextureARB( GL_TEXTURE0_ARB );
    glEnable(GL_TEXTURE_2D);
    band_tex.bind();
    
    glDisable( GL_CULL_FACE );
    for( int i=0; i<band_size; ++i ) {
        band[i]->draw();
    }
    
    glMultiTexCoord3dARB( GL_TEXTURE1_ARB, 0.0, 1.0, 0.0 ); 
        
    glBegin( GL_TRIANGLE_STRIP );
    for( int i=0; i<BOARD_SEGMENTS; ++i ) {
        glNormal3d( 0.0, 1.0, 0.0 );
        //glMultiTexCoord3fARB( GL_TEXTURE3_ARB, band_data[i].x, 0.4-ly, band_data[i].y );
        glMultiTexCoord2dARB( GL_TEXTURE0_ARB, ((i%2)==0)?0.0:1.0, 0.0 ); 
        glVertex3d( band_data[i].x,  0.4, band_data[i].y );
        //glMultiTexCoord3fARB( GL_TEXTURE3_ARB, board_data[i].x, 0.4-ly, board_data[i].y );
        glMultiTexCoord2dARB( GL_TEXTURE0_ARB, ((i%2)==0)?0.0:1.0, 1.0 ); 
        glVertex3d( board_data[i].x, 0.4, board_data[i].y );
    }
    //glMultiTexCoord3fARB( GL_TEXTURE3_ARB, band_data[0].x, 0.4-ly, band_data[0].y );
    glMultiTexCoord2fARB( GL_TEXTURE0_ARB, 1, 0 ); 
    glVertex3d( band_data[0].x,  0.4, band_data[0].y );
    //glMultiTexCoord3fARB( GL_TEXTURE3_ARB, board_data[0].x, 0.4-ly, board_data[0].y );
    glMultiTexCoord2fARB( GL_TEXTURE0_ARB, 1, 1 ); 
    glVertex3d( board_data[0].x, 0.4, board_data[0].y );
    glEnd();
    
    glColor3f(0.0f,0.0f,0.2f);
    glBegin( GL_TRIANGLE_STRIP );
    for( int i=0; i<BOARD_SEGMENTS; ++i ) {
        glVertex3d( band_data[i].x,  0.0, band_data[i].y );
        glVertex3d( band_data[i].x,  0.4, band_data[i].y );
    }
    glVertex3d( band_data[0].x,  0.0, band_data[0].y );
    glVertex3d( band_data[0].x,  0.4, band_data[0].y );
    glEnd();
    
    board_shader.disable( bShader::B_FRAGMENT );
    
    Profiler.begin("ball_mgr::draw_balls");
    draw_balls();
    Profiler.end("ball_mgr::draw_balls");
    
    if( power > 0.0 ) {
        bSystem::video_sys.set_matrix_2d();
        glDisable( GL_TEXTURE_2D );
        glDisable( GL_DEPTH_TEST );
        glColor3f( 0.0f, 0.0f, 0.0f );
        glBegin( GL_TRIANGLE_STRIP );
            glVertex2i( 100, 500 );        
            glVertex2i( 100, 560 );
            glVertex2i( 700, 500 );
            glVertex2i( 700, 560 );
        glEnd();
        
        glBegin( GL_TRIANGLE_STRIP );
            glColor3f( 0.0f, 1.0f, 0.0f );
            glVertex2i( 102, 502 );
            glVertex2i( 102, 558 );
            glColor3d( power/18.2, 1.0-power/18.2, 0.0f );
            glVertex2d( 100.0 + (598.0*power)/18.2, 502 );
            glVertex2d( 100.0 + (598.0*power)/18.2, 558 );
        glEnd();
    }
    
    Profiler.end("ball_mgr::draw_bands");
}