コード例 #1
0
ファイル: wave.c プロジェクト: heyuxiang01/wave-ripple
/***************************************************
 * 用求值器的方式渲染水波纹
 **************************************************/
void drawWave1(void)
{
  int i, j, k;
  for (i = 0; i < 100; i++) {
    for (j = 0; j < 100; j++) {
      for (k = 0; k < 90; k++) {
      }
    }
  }
   
  glMatrixMode(GL_MODELVIEW);
  glPushMatrix();
  glMaterialfv(GL_FRONT, GL_DIFFUSE, wave_diffuse);
  glMaterialfv(GL_FRONT, GL_SPECULAR, wave_specular);
  glMaterialfv(GL_FRONT, GL_SHININESS, wave_shininess);

  glEnable(GL_MAP2_VERTEX_3);
  if (du % 2 == 0) {
    glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3 * ORDER * 2, 2 * ORDER,
	    0, 1, 3, 2 * ORDER, &ctlPoints[0][0][0]);
  } else {
    glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3 * ORDER * 2, 2 * ORDER,
	    0, 1, 3, 2 * ORDER, &ctlPoints1[0][0][0]);
  }
  glMapGrid2f(20, 0, 1, 20, 0, 1);
  glEvalMesh2(GL_FILL, 0, 20, 0, 20);
  glPopMatrix();
}
コード例 #2
0
ファイル: Teaset.c プロジェクト: shutter/libMaoni
static void _bezier_patch(
		GLint grid,
		GLenum type,
		int num,
		float(*vertices)[3],
		int(*patches)[16])
{
	float p[16][3];
	int i, k, l;

	glPushAttrib(GL_ENABLE_BIT | GL_EVAL_BIT);
	glEnable(GL_AUTO_NORMAL);
	glEnable(GL_NORMALIZE);
	glEnable(GL_MAP2_VERTEX_3);
	glEnable(GL_MAP2_TEXTURE_COORD_2);

	for (i = 0; i < num; ++i)
	{
		for (k = 0; k < 16; ++k)
		{
			for (l = 0; l < 3; ++l)
				p[k][l] = vertices[patches[i][k]][l];
		}

		glMap2f(GL_MAP2_TEXTURE_COORD_2, 0.f, 1.f, 2, 2, 0.f, 1.f, 4, 2,
				&tex[0][0][0]);
		glMap2f(GL_MAP2_VERTEX_3, 0.f, 1.f, 3, 4, 0.f, 1.f, 12, 4, &p[0][0]);
		glMapGrid2f(grid, 0.f, 1.f, grid, 0.f, 1.f);
		glEvalMesh2(type, 0, grid, 0, grid);
	}

	glPopAttrib();
}
コード例 #3
0
ファイル: Plane.cpp プロジェクト: sidner/laig-2-pc-rb
void Plane::draw ()
{
    glEnable (GL_AUTO_NORMAL);
    glPushMatrix ();
	terrainAppearance->apply();
	glTranslated(25,0,25);
			glScaled(50,1.5,50);	
    glMap2f (GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 2, 0.0, 1.0, 6, 2, &controlpoints[0][0]);
    glMap2f(GL_MAP2_COLOR_4,  0.0, 1.0, 4, 2,  0.0, 1.0, 8, 2,  &colorpoints[0][0]);
	glMap2f(GL_MAP2_TEXTURE_COORD_2,  0.0, 1.0, 2, 2,  0.0, 1.0, 4, 2,  &textpoints[0][0]);
    
    glEnable (GL_MAP2_VERTEX_3);
    glEnable (GL_MAP2_NORMAL);
    glEnable(GL_MAP2_COLOR_4);
    glEnable(GL_MAP2_TEXTURE_COORD_2);

    //glEnable(GL_TEXTURE_2D);
    //glBindTexture(GL_TEXTURE_2D, 1);
    glMapGrid2f (parts, 0.0, 1.0, parts, 0.0, 1.0);

    glEvalMesh2 (GL_FILL, 0, parts, 0, parts);
    //glDisable(GL_TEXTURE_2D);
    glPopMatrix ();

}
コード例 #4
0
ファイル: Patch.cpp プロジェクト: ziglef/LAIG
void Patch::draw(){
	
	glEnable(GL_MAP2_VERTEX_3);
	glEnable(GL_MAP2_NORMAL);
	glEnable(GL_MAP2_TEXTURE_COORD_2);
	glEnable(GL_TEXTURE_2D);
	
	GLint currentCullFace;
	glGetIntegerv( GL_CULL_FACE_MODE, &currentCullFace );

	glEnable(GL_CCW);
	glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, this->order,  0.0, 1.0, this->order*3, this->order, cpMatrix);
	glEnable(GL_CW);
	glEnable(GL_AUTO_NORMAL);
	glMap2f(GL_MAP2_TEXTURE_COORD_2,  0.0, 1.0, 2, 2,  0.0, 1.0, 4, 2,  &patchTextpoints[0][0]);

	glMapGrid2f(this->partsU, 0.0,1.0, this->partsV, 0.0,1.0); 
	if( strcmp( "fill", this->compute.c_str() ) == 0 )
		glEvalMesh2(GL_FILL, 0,partsU, 0,partsV);
	else
		if( strcmp( "line", this->compute.c_str() ) == 0 )
			glEvalMesh2(GL_LINE, 0,partsU, 0,partsV);
		else
			if( strcmp( "point", this->compute.c_str() ) == 0 )
				glEvalMesh2(GL_POINT, 0,partsU, 0,partsV);

	glEnable(currentCullFace);
	
	glDisable(GL_MAP2_VERTEX_3);
	glDisable(GL_MAP2_NORMAL);
	glDisable(GL_MAP2_TEXTURE_COORD_2);
	glDisable(GL_TEXTURE_2D);
}
コード例 #5
0
ファイル: Plane.cpp プロジェクト: Diogobarroso/LAIG
void Plane::draw(float s, float t)
{
	glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 2,  0.0, 1.0, 6, 2,  &ctrlpoints[0][0]);
	glMap2f(GL_MAP2_NORMAL,   0.0, 1.0, 3, 2,  0.0, 1.0, 6, 2,  &nrmlcompon[0][0]);
	glMap2f(GL_MAP2_TEXTURE_COORD_2,  0.0, 1.0, 2, 2,  0.0, 1.0, 4, 2,  &textpoints[0][0]);

	glEnable(GL_MAP2_VERTEX_3);
	glEnable(GL_MAP2_NORMAL);
	glEnable(GL_MAP2_TEXTURE_COORD_2);

	glMapGrid2f(nDivisions, 0.0,1.0, nDivisions, 0.0,1.0); 

	glEnable(GL_LIGHTING);
	glEnable(GL_COLOR_MATERIAL);
	glEnable(GL_TEXTURE_2D);

	glEvalMesh2(GL_FILL, 0,nDivisions, 0,nDivisions);

	glColor3f(1.0, 1.0, 0.0);
	for (int i = 0; i < 4; i++)
	{
		glRasterPos3f(ctrlpoints[i][0],ctrlpoints[i][1],ctrlpoints[i][2]+0.5);
		glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, '0'+i);
	}

	glDisable(GL_TEXTURE_2D);
	glDisable(GL_COLOR_MATERIAL);
}
コード例 #6
0
ファイル: glut_teapot.c プロジェクト: yunxiaoxiao110/haiku
static void
teapot(GLint grid, GLdouble scale, GLenum type)
{
    float p[4][4][3], q[4][4][3], r[4][4][3], s[4][4][3];
    long i, j, k, l;

    glPushAttrib(GL_ENABLE_BIT | GL_EVAL_BIT);
    glEnable(GL_AUTO_NORMAL);
    glEnable(GL_NORMALIZE);
    glEnable(GL_MAP2_VERTEX_3);
    glEnable(GL_MAP2_TEXTURE_COORD_2);
    glPushMatrix();
    glRotatef(270.0, 1.0, 0.0, 0.0);
    glScalef(0.5 * scale, 0.5 * scale, 0.5 * scale);
    glTranslatef(0.0, 0.0, -1.5);
    for (i = 0; i < 10; i++) {
        for (j = 0; j < 4; j++) {
            for (k = 0; k < 4; k++) {
                for (l = 0; l < 3; l++) {
                    p[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l];
                    q[j][k][l] = cpdata[patchdata[i][j * 4 + (3 - k)]][l];
                    if (l == 1)
                        q[j][k][l] *= -1.0;
                    if (i < 6) {
                        r[j][k][l] =
                            cpdata[patchdata[i][j * 4 + (3 - k)]][l];
                        if (l == 0)
                            r[j][k][l] *= -1.0;
                        s[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l];
                        if (l == 0)
                            s[j][k][l] *= -1.0;
                        if (l == 1)
                            s[j][k][l] *= -1.0;
                    }
                }
            }
        }
        glMap2f(GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2, 0, 1, 4, 2,
                &tex[0][0][0]);
        glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
                &p[0][0][0]);
        glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0);
        glEvalMesh2(type, 0, grid, 0, grid);
        glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
                &q[0][0][0]);
        glEvalMesh2(type, 0, grid, 0, grid);
        if (i < 6) {
            glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
                    &r[0][0][0]);
            glEvalMesh2(type, 0, grid, 0, grid);
            glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
                    &s[0][0][0]);
            glEvalMesh2(type, 0, grid, 0, grid);
        }
    }
    glPopMatrix();
    glPopAttrib();
}
コード例 #7
0
ファイル: Plane.cpp プロジェクト: joaofloressantos/LAIG
void Plane::draw(float s = 1, float t =1){
	// INICIALIZACOES RELACIONADAS COM OS "EVALUATORS"

	// declaram-se quatro interpoladores, de coordenadas, de
	//     normais, de cores e de texturas:
	// o parâmetro de controlo dos interpoladors varia de 0 a 1,
	//     tanto em U como em V
	// os strides (ordem de visita no array de dados final) são:
	//     3 e 6 para o interpol. de coord. (respectivamente U e V)
	//     3 e 6 para o interpol. de normais (respectivamente U e V)
	//     4 e 8 para o interpolador de cores (respectivamente U e V)
	//     2 e 4 para o interpolador de texturas (respectivamente U e V)
	// a interpolação é linear (de grau 1) pelo que se coloca o
	//     valor "2" (grau + 1) nos quatro casos
	
	glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 2, 0.0, 1.0, 3*2, 2,  &ctrlpoints[0][0]);
	
	glMap2f(GL_MAP2_NORMAL,   0.0, 1.0, 3, 2, 0.0, 1.0, 3*2, 2,  &nrmlcompon[0][0]);
	
	glMap2f(GL_MAP2_TEXTURE_COORD_2,  0.0, 1.0, 2, 2, 0.0, 1.0, 2*2, 2,  &textpoints[0][0]);

	// os interpoladores activam-se:
	glEnable(GL_MAP2_VERTEX_3);
	glEnable(GL_MAP2_NORMAL);
	glEnable(GL_MAP2_COLOR_4);
	glEnable(GL_MAP2_TEXTURE_COORD_2);

	// para este conjunto de interpoladores:
	//    na direccao U, serao efectuadas divisoes em 40 passos
	//        quando a variável U varia de 0 a 1
	//    na direccao V, serao efectuadas divisoes em 60 passos
	//        quando a variável U varia de 0 a 1
	glMapGrid2f(parts, 0.0, 1.0, parts, 0.0, 1.0); 

	
	// SEGUE-SE EXEMPLO DE UTILIZACAO DE "EVALUATORS"
	//glShadeModel(GL_SMOOTH);					// GL_FLAT, GL_SMOOTH
	//glEnable(GL_LIGHTING);
	//glEnable(GL_COLOR_MATERIAL);
	//glEnable(GL_TEXTURE_2D);


	glEvalMesh2(GL_FILL, 0, parts, 0, parts);		// GL_POINT, GL_LINE, GL_FILL
	//glEvalMesh2(GL_FILL, 10,30, 20,40);	// poligono incompleto...
	//glEvalMesh2(GL_FILL, -10,50, -20,70);	// ...ou "transbordante"
	// NOTA: os 4 ultimos parametros da funcao glEvalMesh2() nao sao 
	//		 coordenadas mas sim indices de passos (do passo -10
	//		 ao passo 50; do passo -20 ao passo 70...

	//glDisable(GL_TEXTURE_2D);
	//glDisable(GL_COLOR_MATERIAL);

	
	glDisable(GL_AUTO_NORMAL);
}
コード例 #8
0
ファイル: teapot.c プロジェクト: Brofessional/Classes
void Teapot(long grid)
{
    float p[4][4][3], q[4][4][3], r[4][4][3], s[4][4][3];
    long i, j, k, l;

    teaList = 1;
    glNewList(teaList, GL_COMPILE);
    glPushMatrix();
    glRotatef(270.0, 1.0, 0.0, 0.0);
    for (i = 0; i < 10; i++) {
	for (j = 0; j < 4; j++) {
	    for (k = 0; k < 4; k++) {
		for (l = 0; l < 3; l++) {
		    p[j][k][l] = cpData[patchData[i][j*4+k]][l];
		    q[j][k][l] = cpData[patchData[i][j*4+(3-k)]][l];
		    if (l == 1) {
			q[j][k][l] *= -1.0;
		    }
		    if (i < 6) {
			r[j][k][l] = cpData[patchData[i][j*4+(3-k)]][l];
			if (l == 0) {
			    r[j][k][l] *= -1.0;
			}
			s[j][k][l] = cpData[patchData[i][j*4+k]][l];
			if (l == 0) {
			    s[j][k][l] *= -1.0;
			}
			if (l == 1) {
			    s[j][k][l] *= -1.0;
			}
		    }
		}
	    }
	}
	glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &p[0][0][0]);
	glEnable(GL_MAP2_VERTEX_3);
	glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0);
	glEvalMesh2(GL_FILL, 0, grid, 0, grid);
	glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &q[0][0][0]);
	glEvalMesh2(GL_FILL, 0, grid, 0, grid);
	if (i < 6) {
	    glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &r[0][0][0]);
	    glEvalMesh2(GL_FILL, 0, grid, 0, grid);
	    glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &s[0][0][0]);
	    glEvalMesh2(GL_FILL, 0, grid, 0, grid);
	}
    }
    glDisable(GL_MAP2_VERTEX_3);
    glPopMatrix();
    glEndList();
}
コード例 #9
0
void PainelOpenGL::desenharSuperficieBezier(){

    glColor3f(0.0, 0.0, 0.0);

    GLfloat ctrlpoints[4][4][3] = {
        {{-1.5, -1.5, 4.0}, {-0.5, -1.5, 2.0},
        {0.5, -1.5, -1.0}, {1.5, -1.5, 2.0}},
        {{-1.5, -0.5, 1.0}, {-0.5, -0.5, 3.0},
        {0.5, -0.5, 0.0}, {1.5, -0.5, -1.0}},
        {{-1.5, 0.5, 4.0}, {-0.5, 0.5, 0.0},
        {0.5, 0.5, 3.0}, {1.5, 0.5, 4.0}},
        {{-1.5, 1.5, -2.0}, {-0.5, 1.5, -2.0},
        {0.5, 1.5, 0.0}, {1.5, 1.5, -1.0}}
    };
    glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &ctrlpoints[0][0][0]);
    glEnable(GL_MAP2_VERTEX_3);
    glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0);


    for (int j = 0; j <= 8; j++) {

        glBegin(GL_LINE_STRIP);
        for (int i = 0; i <= 30; i++)
            glEvalCoord2f((GLfloat)i/30.0, (GLfloat)j/8.0);
        glEnd();

        glBegin(GL_LINE_STRIP);
        for (int i = 0; i <= 30; i++)
            glEvalCoord2f((GLfloat)j/8.0, (GLfloat)i/30.0);
        glEnd();
    }

}
コード例 #10
0
ファイル: Draw.cpp プロジェクト: shvthr/ComputerGraphics
void Draw::loadSatelliteDish()
{
	
	GLfloat _ctrlpoints[4][4][3] =
	{
	  {
		{-1.3f, -1.3f, 0.0f},
		{-0.5f, -2.0f, 0.0f},
		{0.5f, -2.0f, 0.0f},
		{1.3f, -1.3f, 0.0f}},
	  {
		{-2.0f, -0.5f, 0.0f},
		{-0.5f, -0.5f, -1.5f},
		{0.5f, -0.5f, -1.5f},
		{2.0f, -0.5f, 0.0f}},
	  {
		{-2.0f, 0.5f, 0.0f},
		{-0.5f, 0.5f, -1.5f},
		{0.5f, 0.5f, -1.5f},
		{2.0f, 0.5f, 0.0f}},
	  {
		{-1.3f, 1.3f, 0.0f},
		{-0.5f, 2.0f, 0.0f},
		{0.5f, 2.0f, 0.0f},
		{1.3f, 1.3f, 0.0f}}
	};
ctrlPoints = &_ctrlpoints[0][0][0];
uSize = 4;
vSize = 4;
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, uSize, 0, 1, uSize * 3, vSize,  &_ctrlpoints[0][0][0]);
}
コード例 #11
0
ファイル: Evaluators.c プロジェクト: xpika/winhugs
static void hugsprim_glMap2f_2(HugsStackPtr hugs_root)
{
    HsWord32 arg1;
    HsFloat arg2;
    HsFloat arg3;
    HsInt32 arg4;
    HsInt32 arg5;
    HsFloat arg6;
    HsFloat arg7;
    HsInt32 arg8;
    HsInt32 arg9;
    HsPtr arg10;
    arg1 = hugs->getWord32();
    arg2 = hugs->getFloat();
    arg3 = hugs->getFloat();
    arg4 = hugs->getInt32();
    arg5 = hugs->getInt32();
    arg6 = hugs->getFloat();
    arg7 = hugs->getFloat();
    arg8 = hugs->getInt32();
    arg9 = hugs->getInt32();
    arg10 = hugs->getPtr();
    glMap2f(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
    
    hugs->returnIO(hugs_root,0);
}
コード例 #12
0
void
evaluateGrid(void)
{
  glColor3f(1.0, 1.0, 1.0);
  glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, uSize, 0, 1, uSize * 3, vSize, grid);
  glEvalMesh2(GL_LINE, 0, gridSize, 0, gridSize);
}
コード例 #13
0
//Called to draw scene
void RenderScene(void)
{
	//Clear the window with current clearing color
	glClear(GL_COLOR_BUFFER_BIT);
	
	glColor3f(redC, greenC, blueC);
	//Save the modelview matrix stack
	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();

	//Rotate the mesh around to make it easier to see
	//if(count%3==0)
	//glRotatef(rot++, 1.0f, 1.0f, 0.0f);
	//else if (count%3==1)
	//glRotatef(rot++, 0.0f, 1.0f, 0.0);
//	else
//		glRotatef(rot++, 0.0f, 0.0f, 1.0f);

	//if(rot>=100) rot=0;
	//if(count>=30) count=0;

	//glRotatef(10.0f, 1.0f, 1.0f, 1.0f);


	//Sets up the Bezier
	//This actually only needs to be called once and could go in
	//the setup function
	glMap2f(GL_MAP2_VERTEX_3, //tYPE OF data generated
		0.0f,   //lower u range
		10.0f, //upper u range
		3,   //distance between points in the data
		4,   //dimension in u direction (order)
		0.0f,   //Lower v range
		10.0f, //Upper v range
		12,    //Distance betwen points in the data
		4,   //Dimension in v direction(order)
		&ctrlPoints[0][0][0]);   //array of control points
		
	//Enable the evaluator
	glEnable(GL_MAP2_VERTEX_3);
	glRotatef(10.0f, 1.0f, 1.0f, 0.0f);
	//use higher level functions to mapto a grid, then evaluate the entire thing.

	//Map a grid of 10 points from 0 to 10
	glMapGrid2f(10, 0.0f, 10.0f, 10, 0.0f, 10.0f);

	
	//Evaluate the grid, using lines
	glEvalMesh2(GL_FILL, 0, 10, 0, 10);
	//glEnable(GL_AUTO_NORMAL);

	//Draw the control points
	DrawPoints();

	glPopMatrix();

	//Display the image
	glutSwapBuffers();
}
コード例 #14
0
ファイル: beziersurface.cpp プロジェクト: svbt/opengldemo
void beziersurface::initializeGL()
{
    glClearColor (0.0, 0.0, 0.0, 0.0);
    glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &ctrlpoints[0][0][0]);
    glEnable(GL_MAP2_VERTEX_3);
    glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0);
    glEnable(GL_DEPTH_TEST);
    glShadeModel(GL_FLAT);
}
コード例 #15
0
void init(void)
{
	glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &ctrlpoints[0][0][0]);
	glMap2f(GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2, 0, 1, 4, 2, &texpts[0][0][0]);
	glEnable(GL_MAP2_TEXTURE_COORD_2);
	glEnable(GL_MAP2_VERTEX_3);
	glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0);
	makeImage();
	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, imageWidth, imageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
	glEnable(GL_TEXTURE_2D);
	glEnable(GL_DEPTH_TEST);
	glShadeModel(GL_FLAT);
}
コード例 #16
0
ファイル: ScenePlane.cpp プロジェクト: jnadal/LAIG-Projeto
void ScenePlane::draw()
{
	glPushMatrix();

	int frontFace;
	glGetIntegerv(GL_FRONT_FACE,&frontFace);
	glFrontFace(GL_CW);

	glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 2,  0.0, 1.0, 6, 2,  &ctrlPoints[0][0]);
	glMap2f(GL_MAP2_TEXTURE_COORD_2,  0.0, 1.0, 2, 2,  0.0, 1.0, 4, 2,  &textPoints[0][0]);
	glEnable(GL_MAP2_VERTEX_3);
	glEnable(GL_AUTO_NORMAL);
	glEnable(GL_MAP2_TEXTURE_COORD_2);
	glMapGrid2f(part, 0.0,1.0, part, 0.0,1.0); 
	glEvalMesh2(GL_FILL, 0,part, 0,part);	

	glFrontFace(frontFace);
	glPopMatrix();
}
コード例 #17
0
ファイル: bezurf.c プロジェクト: vrx/sun3
void init(void)
{
  glClearColor (0.0, 0.0, 0.0, 0.0);
  glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4,
	  0, 1, 12, 4, &ctrlpoints[0][0][0]);
  glEnable(GL_MAP2_VERTEX_3);
  glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0);
  glEnable(GL_DEPTH_TEST);
  glShadeModel(GL_FLAT);
}
コード例 #18
0
void init(void)
{
   glClearColor(0.0, 0.0, 0.0, 0.0);
   glEnable(GL_DEPTH_TEST);
   glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4,
           0, 1, 12, 4, &ctrlpoints[0][0][0]);
   glEnable(GL_MAP2_VERTEX_3);
   glEnable(GL_AUTO_NORMAL);
   glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0);
   initlights();       /* for lighted version only */
}
コード例 #19
0
ファイル: Plane.cpp プロジェクト: Ster1177/laig_stratego
void Plane::draw(){

		glColor3f(1.0,1.0,1.0);
		glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 2,  0.0, 1.0, 6, 2,  &ctrlpoints[0][0]);
		glMap2f(GL_MAP2_NORMAL,   0.0, 1.0, 3, 2,  0.0, 1.0, 6, 2,  &nrmlcompon[0][0]);

		glMap2f(GL_MAP2_TEXTURE_COORD_2,  0.0, 1.0, 2, 2,  0.0, 1.0, 4, 2,  &texpoints[0][0]);

		// os interpoladores activam-se:
		glEnable(GL_MAP2_VERTEX_3);
		glEnable(GL_MAP2_NORMAL);

		glEnable(GL_MAP2_TEXTURE_COORD_2);

		glMapGrid2f(this->step, 0.0,1.0, this->step, 0.0,1.0);

		glEvalMesh2(GL_FILL, 0,this->step, 0,this->step);		// GL_POINT, GL_LINE, GL_FILL


}
コード例 #20
0
ファイル: CSceneNodeAABB.cpp プロジェクト: ducis/pile-of-cpp
void CSceneNodeAABB::DrawFace(const FixedArray<vector3,4> &r,unsigned int divA,unsigned int divB) const{
	glPushAttrib(GL_ALL_ATTRIB_BITS);
	glEnable(GL_MAP2_VERTEX_3);
	glEnable(GL_AUTO_NORMAL);
	glMap2f( GL_MAP2_VERTEX_3,0.0f,1.0f,3,2,0.0f,1.0f,6,2,(GLfloat*)r.PtrBegin());
	GLenum err(glGetError());
	glMapGrid2f(divA,0,1,divB,0,1);
	err = glGetError();
	glEvalMesh2(GL_FILL,0,divA,0,divB);
	err = glGetError();
	glPopAttrib();
}
コード例 #21
0
ファイル: Board.cpp プロジェクト: Ster1177/laig_stratego
void Board::draw() {
	glPushMatrix();
	glEnable(GL_TEXTURE_2D);
	tex.apply();

	glScalef(13,1,13);


//	glColor3f(1.0,1.0,1.0);
	glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 2,  0.0, 1.0, 6, 2,  &ctrlpoints[0][0]);
	glMap2f(GL_MAP2_TEXTURE_COORD_2,  0.0, 1.0, 2, 2,  0.0, 1.0, 4, 2,  &texpoints[0][0]);
	// os interpoladores activam-se:
	glEnable(GL_MAP2_VERTEX_3);
	glEnable(GL_AUTO_NORMAL);
	glEnable(GL_MAP2_TEXTURE_COORD_2);

	glMapGrid2f(this->step, 0.0,1.0, this->step, 0.0,1.0);
	glEvalMesh2(GL_FILL, 0,this->step, 0,this->step);		// GL_POINT, GL_LINE, GL_FILL
	glDisable(GL_TEXTURE_2D);
	glPopMatrix();

}
コード例 #22
0
void Plane::draw()
{
    /** Applying the appearance */
    if (appearance != NULL)
        appearance->apply();

    GLint cull_face_mode;
    glGetIntegerv(GL_CULL_FACE_MODE, &cull_face_mode);

    if (glIsEnabled(GL_CULL_FACE))
        if (cull_face_mode == GL_FRONT)
            glCullFace(GL_BACK);
        else if (cull_face_mode == GL_BACK)
            glCullFace(GL_FRONT);
        else
            glCullFace(GL_FRONT_AND_BACK);
    
    /** Declaration of vertex and texture evaluators */
    glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 2, 0.0, 1.0, 6, 2, &control_points[0][0]);
    glMap2f(GL_MAP2_TEXTURE_COORD_2, 0.0, 1.0, 2, 2, 0.0, 1.0, 4, 2, &texture_points[0][0]);

    /** Enables automatic calculation of normals */
    glEnable(GL_MAP2_NORMAL);
    glEnable(GL_AUTO_NORMAL);

    /** Enables the vertex and texture evaluators */
    glEnable(GL_MAP2_VERTEX_3);
    glEnable(GL_MAP2_TEXTURE_COORD_2);

    /** Defines the number of divisions of the grid */
    glMapGrid2f(divisions[0], 0.0, 1.0, divisions[1], 0.0, 1.0);

    /** Draw the whole thing */
    glEvalMesh2(GL_FILL, 0, divisions[0], 0, divisions[1]);

    
    if (glIsEnabled(GL_CULL_FACE))
        glCullFace(cull_face_mode);
}
コード例 #23
0
ファイル: Primitive.cpp プロジェクト: duartepbrandao/LAIG2
void Pplane::draw()
{ 
	GLfloat grid[4][3] = {
		{-0.5,0.0, -0.5}, {0.5, 0.0, -0.5},
		{-0.5, 0.0, 0.5}, {0.5, 0.0, 0.5}};
		GLfloat grid2[4][3] = {
			{0.0, 1.0, 0.0}, {0.0, 1.0, 0.0},
			{0.0, 1.0, 0.0}, {0.0, 1.0, 0.0}};
			GLfloat grid3[4][2] = {
				{0.0, t}, {s,t}, 
				{0.0, 0.0}, {s, 0.0}};

				glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 2,0.0, 1.0, 6, 2, &grid[0][0]);
				glMap2f(GL_MAP2_NORMAL, 0.0, 1.0, 3, 2, 0.0, 1.0, 6, 2, &grid2[0][0]);
				glMap2f(GL_MAP2_TEXTURE_COORD_2, 0.0, 1.0, 2, 2,0.0, 1.0, 4, 2,  &grid3[0][0]);

				glEnable(GL_MAP2_VERTEX_3);
				glEnable(GL_MAP2_NORMAL);
				glEnable(GL_MAP2_TEXTURE_COORD_2);

				glMapGrid2f(parts, 0.0,1.0, parts, 0.0,1.0); 
				glEvalMesh2(GL_FILL, 0,parts, 0,parts);
}
コード例 #24
0
ファイル: Plane.cpp プロジェクト: tiagoaf5/Gounki-3D
void Plane::draw()
{
	pair<float,float> coord;

	if(scene != NULL)
	{
		Data * mydata = (((YAFScene*) scene)->getData());
		coord = mydata->getCurrentTextureCoord();
	}
	else
	{
		coord.first = 1;
		coord.second = 1;
	}
	

	GLfloat textpoints[4][2] = {{ 0.0, 0.0},
	{ 0.0, 1.0 / coord.second}, 
	{ 1.0 / coord.first, 0.0},
	{ 1.0 / coord.first, 1.0 / coord.second} };

	glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 2,  0.0, 1.0, 6, 2,  &ctrlpoints[0][0]);
	glMap2f(GL_MAP2_NORMAL,   0.0, 1.0, 3, 2,  0.0, 1.0, 6, 2,  &nrmlcompon[0][0]);
	glMap2f(GL_MAP2_TEXTURE_COORD_2,  0.0, 1.0, 2, 2,  0.0, 1.0, 4, 2,  &textpoints[0][0]);

	glEnable(GL_MAP2_VERTEX_3);
	glEnable(GL_MAP2_NORMAL);
	glEnable(GL_MAP2_TEXTURE_COORD_2);

	glMapGrid2f(partsU, 0.0,1.0, partsV, 0.0,1.0); 

	glEvalMesh2(GL_FILL, 0,partsU, 0,partsV);

	/*free(ctrlpoints);
	free(nrmlcompon);*/
}
コード例 #25
0
void Sample_12_4::initGL()
{
    glPushAttrib(GL_ALL_ATTRIB_BITS);

    glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4,
            0, 1, 12, 4, &ctrlpoints_12_4[0][0][0]);
    glMap2f(GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2,
            0, 1, 4, 2, &texpts[0][0][0]);
    glEnable(GL_MAP2_TEXTURE_COORD_2);
    glEnable(GL_MAP2_VERTEX_3);
    glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0);
    makeImage();
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, imageWidth, imageHeight, 0,
                 GL_RGB, GL_UNSIGNED_BYTE, image);
    glEnable(GL_TEXTURE_2D);
    glEnable(GL_DEPTH_TEST);
    glShadeModel (GL_FLAT);
    initlights();       /* for lighted version only */
}
コード例 #26
0
ファイル: bez3d.cpp プロジェクト: reima/ogl-docs-mirror
// Called to draw scene
void RenderScene(void)
    {
    // Clear the window with current clearing color
    glClear(GL_COLOR_BUFFER_BIT);

    // Save the modelview matrix stack
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();

    // Rotate the mesh around to make it easier to see
    glRotatef(45.0f, 0.0f, 1.0f, 0.0f);
    glRotatef(60.0f, 1.0f, 0.0f, 0.0f);

    // Sets up the Bezier
    // This actually only needs to be called once and could go in
    // the setup function
    glMap2f(GL_MAP2_VERTEX_3,	// Type of data generated
    0.0f,						// Lower u range
    10.0f,						// Upper u range
    3,							// Distance between points in the data
    3,							// Dimension in u direction (order)
    0.0f,						// Lover v range
    10.0f,						// Upper v range
    9,							// Distance between points in the data
    3,							// Dimension in v direction (order)
    &ctrlPoints[0][0][0]);		// array of control points

    // Enable the evaluator
    glEnable(GL_MAP2_VERTEX_3);

    // Use higher level functions to map to a grid, then evaluate the
    // entire thing.

    // Map a grid of 10 points from 0 to 10
    glMapGrid2f(10,0.0f,10.0f,10,0.0f,10.0f);

    // Evaluate the grid, using lines
    glEvalMesh2(GL_LINE,0,10,0,10);

    // Draw the Control Points
    DrawPoints();

    // Restore the modelview matrix
    glPopMatrix();

    // Dispalay the image
    glutSwapBuffers();
    }
コード例 #27
0
ファイル: render2swap.c プロジェクト: AmesianX/xorg-server
void
__glXDispSwap_Map2f(GLbyte * pc)
{
    GLint uorder, vorder, ustride, vstride, k;
    GLfloat u1, u2, v1, v2, *points;
    GLenum target;
    GLint compsize;

    __GLX_DECLARE_SWAP_VARIABLES;
    __GLX_DECLARE_SWAP_ARRAY_VARIABLES;

    __GLX_SWAP_INT(pc + 0);
    __GLX_SWAP_INT(pc + 12);
    __GLX_SWAP_INT(pc + 24);
    __GLX_SWAP_FLOAT(pc + 4);
    __GLX_SWAP_FLOAT(pc + 8);
    __GLX_SWAP_FLOAT(pc + 16);
    __GLX_SWAP_FLOAT(pc + 20);

    target = *(GLenum *) (pc + 0);
    uorder = *(GLint *) (pc + 12);
    vorder = *(GLint *) (pc + 24);
    u1 = *(GLfloat *) (pc + 4);
    u2 = *(GLfloat *) (pc + 8);
    v1 = *(GLfloat *) (pc + 16);
    v2 = *(GLfloat *) (pc + 20);
    points = (GLfloat *) (pc + 28);

    k = __glMap2f_size(target);
    ustride = vorder * k;
    vstride = k;

    if (vorder <= 0 || uorder <= 0 || k < 0) {
        /* Erroneous command. */
        compsize = 0;
    }
    else {
        compsize = uorder * vorder * k;
    }
    __GLX_SWAP_FLOAT_ARRAY(points, compsize);

    glMap2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
}
コード例 #28
0
ファイル: tutorials.hpp プロジェクト: ghl3/luview
    void draw_local()
    {
        const int Nx = 8;
        const int Ny = 8;

        double Lx0=-0.5, Lx1=0.5, Ly0=-0.5, Ly1=0.5;

        const int sx = Ny;
        const int sy = 1;

        const double dx = (Lx1 - Lx0) / (Nx - 1);
        const double dy = (Ly1 - Ly0) / (Ny - 1);

        GLfloat *surfdata = (GLfloat*) malloc(Nx*Ny*3*sizeof(GLfloat));

        for (int i=0; i<Nx; ++i) {
            for (int j=0; j<Ny; ++j) {

                const double x = Lx0 + i*dx;
                const double y = Ly0 + j*dy;
                const double z = x*x + y*y;
                const int m = i*sx + j*sy;

                surfdata[3*m + 0] = x;
                surfdata[3*m + 1] = z;
                surfdata[3*m + 2] = y;
            }
        }

        for (int i=1; i<Nx-1; ++i) {
            for (int j=1; j<Ny-1; ++j) {

                const double x = Lx0 + i*dx;
                const double y = Ly0 + j*dy;
                const GLfloat *s = &surfdata[3*((i-1)*sx + (j-1)*sy)];

                glMap2f(GL_MAP2_VERTEX_3, x-dx, x+dx, 3*sx, 3, y-dy, y+dy, 3*sy, 3, s);
                glMapGrid2f(4, x-dx/2, x+dx/2, 4, y-dy/2, y+dy/2);
                glEvalMesh2(GL_LINE, 0, 4, 0, 4);
            }
        }
        free(surfdata);
    }
コード例 #29
0
ファイル: tutorials.hpp プロジェクト: ghl3/luview
    void draw_local()
    {
        const int sx = Ny;
        const int sy = 1;

        const double dx = (Lx1 - Lx0) / (Nx - 1);
        const double dy = (Ly1 - Ly0) / (Ny - 1);

        for (int i=1; i<Nx-1; ++i) {
            for (int j=1; j<Ny-1; ++j) {

                const double x = Lx0 + i*dx;
                const double y = Ly0 + j*dy;
                const GLfloat *s = &surfdata[3*((i-1)*sx + (j-1)*sy)];

                glMap2f(GL_MAP2_VERTEX_3, x-dx, x+dx, 3*sx, 3, y-dy, y+dy, 3*sy, 3, s);
                glMapGrid2f(1, x-dx/2, x+dx/2, 1, y-dy/2, y+dy/2);
                glEvalMesh2(GL_LINE, 0, 1, 0, 1);
            }
        }
    }
コード例 #30
0
ファイル: Primitive.cpp プロジェクト: duartepbrandao/LAIG2
void Ppatch::draw(){
	int font;
	glGetIntegerv(GL_FRONT_FACE, &font);

	glEnable(GL_CW);
	glEnable(GL_AUTO_NORMAL);

	if(order==1){
		GLfloat grid_1_2[4][2] = {
			{0.0, t}, {s,t},
			{0.0, 0.0}, {s, 0.0}};

			glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 2 ,0.0, 1.0, 6, 2, &grid_1[0][0]);
			glMap2f(GL_MAP2_TEXTURE_COORD_2, 0.0, 1.0, 2, 2,0.0, 1.0, 4, 2,  &grid_1_2[0][0]);
	}else if(order==2){
		GLfloat grid_2_2[9][2] = {
			{0.0,t}, {s/2, t},{s,t},
			{0.0,t/2},{s/2, t/2},{s, t/2},
			{0.0,0.0},{s/2,0.0},{s,0.0}};

			glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 3 ,0.0, 1.0, 9, 3, &grid_2[0][0]);
			glMap2f(GL_MAP2_TEXTURE_COORD_2, 0.0, 1.0, 2, 3 ,0.0, 1.0, 6, 3,  &grid_2_2[0][0]);
	}else if(order==3){
		GLfloat grid_3_3[16][2] = {
			{0.0,t}, {s/3, t},{2*s/3,t},{s,t},
			{0.0,2*t/3},{s/3,2*t/3},{2*s/3,2*t/3},{s,2*t/3},
			{0.0,t/3},{s/3,t/3},{2*s/3,t/3},{s,t/3},
			{0.0,0.0},{s/3,0.0},{2*s/3,0.0},{s,0.0}};

			glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4 ,0.0, 1.0, 12, 4, &grid_3[0][0]);
			glMap2f(GL_MAP2_TEXTURE_COORD_2, 0.0, 1.0, 2, 4 ,0.0, 1.0, 8, 4,  &grid_3_3[0][0]);
	}

	glEnable(GL_MAP2_VERTEX_3);
	glEnable(GL_MAP2_NORMAL);
	glEnable(GL_MAP2_TEXTURE_COORD_2);

	glMapGrid2f(partsU, 0.0,1.0, partsV, 0.0,1.0);

	if(compute=="line"){
		glEvalMesh2(GL_LINE, 0,partsU, 0,partsV);
	}else if(compute=="point"){
		glEvalMesh2(GL_POINT, 0,partsU, 0,partsV);
	}else if(compute=="fill"){
		glEvalMesh2(GL_FILL, 0,partsU, 0,partsV);
	}
	glEnable(font);
}