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); }
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); }
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 ); }
void GPUVolRTV0::vertex(float x, float y, float z) { glColor3f(x,y,z); glMultiTexCoord3fARB(GL_TEXTURE1_ARB, x, y, z); glVertex3f(x,y,z); }
void __stdcall glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) { if (!ARB_multitexture) return; glMultiTexCoord3fARB(target, s, t, r); }
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"); }