Пример #1
0
            inline void tglMultMatrix(const math::Matrix4& matrix)
            {
#if defined(TAU_SCALAR_DOUBLE)
                    glMultTransposeMatrixd((const double*)matrix.getData());
#else
                    glMultTransposeMatrixf((const float*)matrix.getData());
#endif
            }
Пример #2
0
static int lua_glMultTransposeMatrixf(lua_State *L) {
  CHECK_ARG_COUNT(L, 1);
  Array1D<Float> m(L, 1);
  if (m.size() != 16) {
    luaL_error(L, "gl.MultTransposeMatrixf: invalid matrix data");
  }
  glMultTransposeMatrixf(m);
  return 0;
}
Пример #3
0
void set_camera_view( void )
{
    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();

    
    // do rotation
    glMultTransposeMatrixf( core.camera.rotation.mat );
    //glRotatef( core.camera.pitch  , 1.f, 0.f, 0.f );
    //glRotatef( core.camera.heading, 0.f, 1.f, 0.f );

    // THEN move the origin
    glTranslatef( core.camera.origin[0], core.camera.origin[1], core.camera.origin[2] );
}
Пример #4
0
void drawer_t::drawTriangles( tessellation_t * tes )
{
    tesQuads_t * qtes = (tesQuads_t *) tes;

    glPushMatrix();
    glTranslatef( tes->origin[0], tes->origin[1], tes->origin[2] );
    glMultTransposeMatrixf( tes->rotation.mat );

    glEnableClientState( GL_COLOR_ARRAY );
    glEnableClientState( GL_VERTEX_ARRAY );

    glVertexPointer( 3, GL_FLOAT, 0, qtes->buf.data );
    glColorPointer( 3, GL_FLOAT, 0, qtes->colors.data );
    glDrawArrays( GL_TRIANGLE_STRIP, 0, qtes->colors.length() );

    glDisableClientState( GL_COLOR_ARRAY );
    glDisableClientState( GL_VERTEX_ARRAY );
    glPopMatrix();
}
Пример #5
0
	void PointLight::render()
	{
		glPushMatrix();
		glMultTransposeMatrixf(object.getComponent<Transform>()->getLocalToWorld().get());

		glDisable(GL_LIGHTING);
		glDisable(GL_TEXTURE);
		glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

		glColor3f(0, 1, 0);

		glDrawCube();

		glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
		glEnable(GL_TEXTURE);
		glEnable(GL_LIGHTING);
		

		glPopMatrix();
	}
Пример #6
0
void ShapeUtils::applyTransform(const cv::Mat &mtx) {
    // Convert incoming matrix to float for OpenGL
    cv::Mat mtxf;
    if (mtx.depth() != CV_32F) {
        mtx.convertTo(mtxf, CV_32F);
    } else {
        mtxf = mtx;
    }

    cv::Mat mtx3D = cv::Mat::eye(4, 4, CV_32FC1);
    mtx3D.at<float>(0, 0) = mtxf.at<float>(0, 0);
    mtx3D.at<float>(0, 1) = mtxf.at<float>(0, 1);
    mtx3D.at<float>(0, 3) = mtxf.at<float>(0, 2);
    mtx3D.at<float>(1, 0) = mtxf.at<float>(1, 0);
    mtx3D.at<float>(1, 1) = mtxf.at<float>(1, 1);
    mtx3D.at<float>(1, 3) = mtxf.at<float>(1, 2);
    mtx3D.at<float>(3, 0) = mtxf.at<float>(2, 0);
    mtx3D.at<float>(3, 1) = mtxf.at<float>(2, 1);

    glMultTransposeMatrixf(mtx3D.ptr<float>(0));
}
Пример #7
0
void TScene::RenderShipPreview(Vector pos,Vector dir, Vector up, int NumMesh)
{	
//  glPushMatrix();
//	glLoadIdentity();
	float mmodel[16]={0}; 
	Vector a(0,0,0),b(0,0,0);
	Vector eye=Camera->GetPosition()-pos;
		eye=NormalizeVector(eye);
		a=CrossProduct(&eye,&Camera->UpVector);
		a=NormalizeVector(a);
		b=CrossProduct(&a,&eye);//*-1.0f;
//		D3DXMatrixLookAtLH (&matView, &(eye*150.0f),&(b*50.0f),	&World.aiGlobal.cam->GetTy());
	glMatrixMode(GL_MODELVIEW);  
	glLoadIdentity();
    gluLookAt(eye.x*40.0f,eye.y*40.0f,eye.z*40.0f,-b.x*10.0f,-b.y*10.0f,-b.z*10.0f,Camera->UpVector.x,Camera->UpVector.y,Camera->UpVector.z);
//		engine->m_d3dDevice->SetTransform (D3DTS_VIEW, &matView);
    glGetFloatv(GL_MODELVIEW_MATRIX, mmodel);
//		World.resManager.m_Res[World.aiGlobal.cam->target->gRes].p_d3dx_mesh->DrawSubset( 0 );

//	if (World.aiGlobal.cam->target){
//		matWorld=World.aiGlobal.cam->target->GetCurMatrix();
//		engine->m_d3dDevice->SetTransform(D3DTS_WORLD, &matWorld);
	glMatrixMode(GL_PROJECTION);  
	glLoadIdentity();
	glMultMatrixf(ProjectionMatrix);
//    glMultTransposeMatrixf(mmodel);
	glMultMatrixf(mmodel);
//    glPushMatrix();
//    glPopMatrix();
	glMatrixMode(GL_MODELVIEW);  
    glLoadIdentity();
    gluLookAt(0,0,0,dir.x,dir.y,dir.z,up.x,up.y,up.z);
    glGetFloatv(GL_MODELVIEW_MATRIX, mmodel);
//    glPopMatrix();
    glLoadIdentity();
//    glTranslatef(pos.x, pos.y, pos.z);
    glMultTransposeMatrixf(mmodel);
    Mesh[NumMesh].Render();
//    glPopMatrix();
}
Пример #8
0
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL13_nglMultTransposeMatrixf(JNIEnv *env, jclass clazz, jlong m, jlong function_pointer) {
	const GLfloat *m_address = (const GLfloat *)(intptr_t)m;
	glMultTransposeMatrixfPROC glMultTransposeMatrixf = (glMultTransposeMatrixfPROC)((intptr_t)function_pointer);
	glMultTransposeMatrixf(m_address);
}
Пример #9
0
/*** Procesamiento de cada cuadro ***/
void Video( float elapsed )
{
    /* Limpio la pantalla */
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT );
    
    /* Perspectiva */
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    gluPerspective( 50.0f/zoom,                           // Ángulo de visión vertical
                   (GLfloat)WIDTH / (GLfloat)HEIGHT, // Aspecto
                   1.0f,                             // Plano cercano
                   2000.0f );                        // Plano lejano
    
    /* Cámara */
    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();
    
    /* Espada */
    glPushMatrix();
    glMultTransposeMatrixf(volumesEspada.matrix);
    
  //  glTranslatef(cam.pos.x, cam.pos.y + 5, cam.pos.z + 10);
    glRotatef(angX, 1.0f, 0.0f, 0.0f);
    glRotatef(angY, 0.0f, 1.0f, 0.0f);
    glRotatef(angZ, 0.0f, 0.0f, 1.0f);
    
    glCallList(modeloEspada.modelList);
    glPopMatrix();
    /*________*/
    
    
    
   
    
        
    
    
       
    
    
	VECTOR dir = SumVector(cam.pos, cam.look);
    
    gluLookAt(  cam.pos.x, cam.pos.y,  cam.pos.z,       // Posición
                dir.x, dir.y, dir.z,                    // Dirección
                0.0f, 1.0f, 0.0f );                     // Arriba
    
    
    
    
    /*Luz*/
    glPushMatrix();
    SetDirLight(GL_LIGHT0, &dirLight);
    glEnable (GL_LIGHT0);
    glPopMatrix();
    
    
    /*Terreno*/
    glPushMatrix();
    SetMaterial( &terrain.material );
    glBindTexture(GL_TEXTURE_2D, terrain.textureID);
    glCallList( terrain.terrainList );
    glPopMatrix();
    
    
    

    /*agua*/
      /*
    glPushMatrix();
    glEnable(GL_BLEND);
    SetMaterial( &agua.material );
    glBindTexture(GL_TEXTURE_2D, agua.textureID);
    glCallList( agua.terrainList );
    glDisable(GL_BLEND);
    glPopMatrix();
    
    
*/
    
    
    
    
    
    /*texto fps*/
 //   RenderText(fpstex, arialfont, 0, 0, &fontColor, GL_FALSE);
    
    
    /*SkyBox*/
    glPushMatrix();
    RenderSkybox(&skybox, &skyboxBox, &skyboxColor);
    glPopMatrix();
    
    

    

    
  
  
    
    
    
    //**texturitas!!!**//
    
    
    /* subacuatica*/
    
    
    glPushMatrix();
    

    //glLoadIdentity();
    glEnable(GL_BLEND);
    SetMaterial(&aguaMtrl);
    
    glBindTexture(GL_TEXTURE_2D, UnderwaterTex);

    glTranslatef(cam.pos.x, vWater, cam.pos.z);
    glScalef(1000.0f, 1000.0f, 1000.0f);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
    //  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER    , );

    
    glBegin(GL_QUADS);
    //Cara posterior
    
    
    
    glNormal3f( 0.0f,  1.0f, 0.0f);

    
    glTexCoord2f    ( 0.0f,  1.0f + movWater);
    glVertex3f      (-1.0f,  0.0f, -1.0f);
    glTexCoord2f    ( 0.0f,  0.0f + movWater);
    glVertex3f      ( 1.0f,  0.0f, -1.0f);
    glTexCoord2f    ( 1.0f,  0.0f + movWater);
    glVertex3f      ( 1.0f,  0.0f,  1.0f);
    glTexCoord2f    ( 1.0f,  1.0f + movWater);
    glVertex3f      (-1.0f,  0.0f,  1.0f);

    glEnd();
 
    glDisable(GL_BLEND);

    
    glPopMatrix();
    
    //_______________//
    //Transparencia


    
    
    
    
    /*HUD*/
    Begin2D(WIDTH, HEIGHT);
    


    
    if ( !renderUnderwater){
            }
    
    if (under){
        //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        Render2DTexture( UnderwaterTex, 0, 0, WIDTH, HEIGHT );
    }
    
    
    //RENDER DEL MAPA Y EL DOT
    glPushMatrix();
    glTranslatef(WIDTH*0.79 , HEIGHT * 0.79, 0);
    Render2DTexture( mapTex, 0, 0, mapWidth, mapHeight );
    Render2DTexture( dotTex, dotX, dotZ, dotX+10, dotZ+10  );

    glPopMatrix();
    Render2DTexture(hudNull, 0, 0, WIDTH, HEIGHT);
    Render2DTexture(oxBar, 0, 0, ox * 10.0f, 50.0f);
    End2D();


    
    
    
    
    
    
    
    /* Ejecutar comandos en cola */
    glFlush();
    
    /* BackBuffer=FrontBuffer(flip) */
    SDL_GL_SwapBuffers();
}
Пример #10
0
void glMultTransposeMatrixd(const GLdouble *m) {
    constArrayToFloat(m, 16);
    glMultTransposeMatrixf(s);
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL13_nglMultTransposeMatrixf(JNIEnv *__env, jclass clazz, jlong mAddress, jlong __functionAddress) {
	const GLfloat *m = (const GLfloat *)(intptr_t)mAddress;
	glMultTransposeMatrixfPROC glMultTransposeMatrixf = (glMultTransposeMatrixfPROC)(intptr_t)__functionAddress;
	UNUSED_PARAMS(__env, clazz)
	glMultTransposeMatrixf(m);
}
Пример #12
0
void gl4es_glMatrixMultTransposef(GLenum matrixMode, const GLfloat *m) {
    mat(glMultTransposeMatrixf(m));
}
Пример #13
0
void shape::draw(bool selected)
{
  //Ensure we're in the correct mode for drawing
  glMatrixMode(GL_MODELVIEW);

  //In order to translate only this shape, we need to push and pop the current matrix
  glPushMatrix();
     
  //Translate the shape so that its centre is in the right location
  glTranslated(mXCentre, mYCentre, 0.0);

 // glPushMatrix();

      //glPushMatrix();
  QMatrix4x4 myMat4(myMat);
  glMultTransposeMatrixf(myMat4.data());
      //glPopMatrix();

  //glPopMatrix();

  //This might be a good place to add other transformations
  //(Here's an example, the identity matrix)

  /*
  GLdouble matrix[4][4];
  matrix[0][0] = 1;
  matrix[0][1] = 0;
  matrix[0][2] = 0;
  matrix[0][3] = 0;
  matrix[1][0] = 0;
  matrix[1][1] = 1;
  matrix[1][2] = 0;
  matrix[1][3] = 0;
  matrix[2][0] = 0;
  matrix[2][1] = 0;
  matrix[2][2] = 1;
  matrix[2][3] = 0;
  matrix[3][0] = 0;
  matrix[3][1] = 0;
  matrix[3][2] = 0;
  matrix[3][3] = 1;
  glMultMatrixd(&matrix[0][0]);
*/

  //Set the colour
  glColor3f(mNormalColour.redF(), mNormalColour.greenF(), mNormalColour.blueF());
  
  //Draw the actual shape
  glBegin(GL_POLYGON);
  drawShape();
  glEnd();

  //If it's selected, draw a highlight
  if(selected)
  {
    glColor3f(mSelectedColour.redF(), mSelectedColour.greenF(), mSelectedColour.blueF());

    const float lineWidth = 3.0;
    glLineWidth(lineWidth);

    glBegin(GL_LINE_LOOP);
    drawShape();
    glEnd();
  }

  //Restore the original matrix
  glPopMatrix();
}