Ejemplo n.º 1
0
void DrawCylinder(GLfloat radius, GLfloat height, GLint slices, GLfloat xTexScale, GLfloat yTexScale)
{
    GLfloat angleInc = (2.0f * 3.14159265f) / (GLfloat)slices;
    GLint i;

    glBegin(GL_QUAD_STRIP);

    for (i = 0; i <= slices; i++)
    {
        glMultiTexCoord2f(GL_TEXTURE0, xTexScale * i / (GLfloat)slices, 0.0f);
        glMultiTexCoord3f(GL_TEXTURE1, cos((angleInc * i) + (3.14159265f * 0.5f)), 0.0f, sin((angleInc * i) + (3.14159265f * 0.5f)));  // tangent
        glMultiTexCoord3f(GL_TEXTURE2, 0.0f, 1.0f, 0.0f);                           // binormal
        glMultiTexCoord3f(GL_TEXTURE3, cos(angleInc * i), 0.0f, sin(angleInc * i)); // normal
        glVertex3f(radius * cos(angleInc * i), -height*0.5f, radius * sin(angleInc * i));
        glMultiTexCoord2f(GL_TEXTURE0, xTexScale * i / (GLfloat)slices, yTexScale);
        glVertex3f(radius * cos(angleInc * i), height*0.5f, radius * sin(angleInc * i));
    }

    glEnd();

    glBegin(GL_TRIANGLE_FAN);

    glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0.0f);
    glMultiTexCoord3f(GL_TEXTURE1, 1.0f, 0.0f, 0.0f); // tangent
    glMultiTexCoord3f(GL_TEXTURE2, 0.0f, 0.0f, 1.0f); // binormal
    glMultiTexCoord3f(GL_TEXTURE3, 0.0f, 1.0f, 0.0f); // normal
    glVertex3f(0.0f, height*0.5f, 0.0f);

    for (i = 0; i <= slices; i++)
    {
        glMultiTexCoord2f(GL_TEXTURE0, xTexScale * cos(angleInc * i) * 0.159155f, 
                                       xTexScale * sin(angleInc * i) * 0.159155f);
        glVertex3f(radius * cos(angleInc * -i), height*0.5f, radius * sin(angleInc * -i));
    }

    glEnd();

    glBegin(GL_TRIANGLE_FAN);

    glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0.0f);
    glMultiTexCoord3f(GL_TEXTURE1, -1.0f, 0.0f, 0.0f); // tangent
    glMultiTexCoord3f(GL_TEXTURE2, 0.0f, 0.0f, -1.0f); // binormal
    glMultiTexCoord3f(GL_TEXTURE3, 0.0f, -1.0f, 0.0f); // normal
    glVertex3f(0.0f, -height*0.5f, 0.0f);

    for (i = 0; i <= slices; i++)
    {
        glMultiTexCoord2f(GL_TEXTURE0, xTexScale * cos(angleInc * i) * 0.159155f, 
                                       xTexScale * sin(angleInc * i) * 0.159155f);
        glVertex3f(radius * cos(angleInc * i), -height*0.5f, radius * sin(angleInc * i));
    }

    glEnd();
}
Ejemplo n.º 2
0
static bool
test_without_glproxy(void)
{
    glBegin(GL_TRIANGLES);
    {
        /* Hit a base entrypoint that won't call gl_version() */
        glVertex4f(0, 0, 0, 0);

        /* Hit an entrypoint that will call probably call gl_version() */
        glMultiTexCoord3f(GL_TEXTURE0, 0.0, 0.0, 0.0);

        /* Hit an entrypoint that will probably call
         * glproxy_conservative_has_extension();
         */
        if (has_argb2101010) {
            glTexCoordP3ui(GL_UNSIGNED_INT_2_10_10_10_REV, 0);
        }
    }
    glEnd();

    /* We can't make any assertions about error presence this time
     * around. This test is just trying to catch segfaults.
     */
    return true;
}
Ejemplo n.º 3
0
   void Lookup1D_UndistortionFilter::undistortColorImage(unsigned char const * image, unsigned char * result)
   {
	  float xh, yh, zh;

      _srcTex.overwriteWith(image, 3);

      _destBuffer.activate();
      setupNormalizedProjection();

      float const lutScale = _pixelSize / _lutSize;

      radialLUTShader->parameter("lutScale", lutScale);
      radialLUTShader->parameter("center", _center[0], _center[1]);
      radialLUTShader->parameter("wh", _width, _height, 1.0f/_width, 1.0f/_height);

      _srcTex.enable(GL_TEXTURE0);
      glActiveTexture(GL_TEXTURE1_ARB);
      glBindTexture(GL_TEXTURE_1D, _lut1DTexID);
      glEnable(GL_TEXTURE_1D);

      radialLUTShader->enable();
      glBegin(GL_TRIANGLES);

	  applyT(_T_rect,0,0,xh,yh,zh);
      glMultiTexCoord3f(GL_TEXTURE0_ARB, xh, yh,zh);	  
      glVertex2f(0, 0);
	  applyT(_T_rect,2*_width,0,xh,yh,zh);
      glMultiTexCoord3f(GL_TEXTURE0_ARB,xh, yh,zh);
      glVertex2f(2, 0);
	  applyT(_T_rect,0,2*_height,xh,yh,zh);
      glMultiTexCoord3f(GL_TEXTURE0_ARB, xh,yh,zh);
      glVertex2f(0, 2);
      glEnd();
      radialLUTShader->disable();

      _srcTex.disable(GL_TEXTURE0);
      glActiveTexture(GL_TEXTURE1_ARB);
      glDisable(GL_TEXTURE_1D);

      glReadPixels(0, 0, _width, _height, GL_RGB, GL_UNSIGNED_BYTE, result);
   } // Lookup1D_UndistortionFilter::undistortColorImage()
Ejemplo n.º 4
0
GLvoid
glMultiTexCoord2f(GLenum tex, GLfloat s, GLfloat t)
{
    GLuint ind = tex - GL_TEXTURE0;
    if (vt_coordsize[ind] > 2){
        glMultiTexCoord3f(tex, s, t, 0.0);
    } else {
        vt_coordsize[ind] = 2;
        vt_current->coord[ind].s = s;
        vt_current->coord[ind].t = t;
    }
}
Ejemplo n.º 5
0
void DrawTorus(GLfloat innerRadius, GLfloat ringRadius, GLint rings, GLint slices, GLfloat xTexScale, GLfloat yTexScale)
{
    GLfloat sliceAngleInc = (2.0f * 3.14159265f) / (GLfloat)slices;
    GLfloat ringAngleInc = (2.0f * 3.14159265f) / (GLfloat)rings;
    GLint i, j;

    for (i = 0; i <= rings; i++)
    {
        glBegin(GL_QUAD_STRIP);

        for (j = 0; j <= slices; j++)
        {
            glMultiTexCoord2f(GL_TEXTURE0, xTexScale * (i+1) / (GLfloat)rings, yTexScale * j / (GLfloat)slices);
            glMultiTexCoord3f(GL_TEXTURE1, cos((ringAngleInc * (i+1)) + (3.14159265f * 0.5f)), 0.0f, sin((ringAngleInc * (i+1)) + (3.14159265f * 0.5f)));  // tangent
            glMultiTexCoord3f(GL_TEXTURE2, 0.0f, sin((sliceAngleInc * j) + (3.14159265f * 0.5f)), 0.0f);  // binormal
            glMultiTexCoord3f(GL_TEXTURE3, cos(ringAngleInc * (i+1)), sin(sliceAngleInc * j), sin(ringAngleInc * (i+1))); // normal
            glVertex3f((innerRadius + ringRadius + (ringRadius * cos(sliceAngleInc * j))) * cos(ringAngleInc * (i+1)), (ringRadius * sin(sliceAngleInc * j)), (innerRadius + ringRadius + (ringRadius * cos(sliceAngleInc * j))) * sin(ringAngleInc * (i+1)));
            glMultiTexCoord2f(GL_TEXTURE0, xTexScale * i / (GLfloat)rings, yTexScale * j / (GLfloat)slices);
            glMultiTexCoord3f(GL_TEXTURE1, cos((ringAngleInc * i) + (3.14159265f * 0.5f)), 0.0f, sin((ringAngleInc * i) + (3.14159265f * 0.5f)));  // tangent
            glMultiTexCoord3f(GL_TEXTURE2, 0.0f, sin((sliceAngleInc * j) + (3.14159265f * 0.5f)), 0.0f);  // binormal
            glMultiTexCoord3f(GL_TEXTURE3, cos(ringAngleInc * i), sin(sliceAngleInc * j), sin(ringAngleInc * i)); // normal
            glVertex3f((innerRadius + ringRadius + (ringRadius * cos(sliceAngleInc * j))) * cos(ringAngleInc * i), (ringRadius * sin(sliceAngleInc * j)), (innerRadius + ringRadius + (ringRadius * cos(sliceAngleInc * j))) * sin(ringAngleInc * i));
        }

        glEnd();
    }
}
Ejemplo n.º 6
0
/**
 * Zeichnet einen Vertex (glVertex) mit Texturkoordinaten und gegebenfalls Farbinformationen aber ohne Normale.
 */
void SGLVektor::DrawVertex()
{
/*
	Setzt wenn gegeben Texturkoordinaten für alle Texturrenderer vom der aktiven bis zu  GL_TEXTURE0_ARB herunter.
	(Aber immer nur die Selben)
 */
	std::stringstream buff;
	bool texOK=false;
#ifndef WIN32
	if(SGLTextur::TexLoaded)
	{
		short coord=texKoord.size();
		if(coord<SGLTextur::TexLoaded)
		{
			buff << *this;
			SGLprintWarning("Die geladene Textur hat %d Dimensionen, die Texturkoordinaten des Vertex \"%s\" sind aber nur %d-Dimensional",SGLTextur::TexLoaded,buff.str().c_str(),coord);
		}
		int i=GL_TEXTURE0_ARB+SGLTextur::multitex_layer ;//@todo dirty Hack
		switch(SGLTextur::TexLoaded > coord ? coord:SGLTextur::TexLoaded )
		{
		case 1:
			for(;i>=GL_TEXTURE0_ARB;i--)
				glMultiTexCoord1f(i,texKoord[0]);
			break;
		case 2:
			for(;i>=GL_TEXTURE0_ARB;i--)
				glMultiTexCoord2f(i,texKoord[0], texKoord[1]);
			break;
		case 3:
			for(;i>=GL_TEXTURE0_ARB;i--)
				glMultiTexCoord3f(i,texKoord[0], texKoord[1],texKoord[2]);
			break;
		default:{
			buff << *this;
			SGLprintError("Texturtyp (%d) passt nicht zu den verfügbaren Texturkoordinaten beim Zeichnen des Vertex \"%s\"",SGLTextur::TexLoaded, coord,buff.str().c_str());}break;
		}
		texOK=true;//@todo naja nich immer
	}
#else
// "Texture loading is currently not supportet for Windows"
#endif
	if(!SGLMaterial::MatLoaded && !texOK)
	{
		if(SGLV_R>=0 || SGLV_G>=0 || SGLV_B>=0)glColor3dv(Color);
		else{
			buff << *this;
			SGLprintWarning("Keine Farbinformationen verfgbar beim Zeichnen des Vertex \"%s\"",buff.str().c_str());
		}
	}
	DrawPureVertex();
}
Ejemplo n.º 7
0
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL13_nglMultiTexCoord3f(JNIEnv *env, jclass clazz, jint target, jfloat s, jfloat t, jfloat r, jlong function_pointer) {
	glMultiTexCoord3fPROC glMultiTexCoord3f = (glMultiTexCoord3fPROC)((intptr_t)function_pointer);
	glMultiTexCoord3f(target, s, t, r);
}
Ejemplo n.º 8
0
// draw a slice of the volume
void
VolumeBuffer::drawSlice(float z)
{
    glBegin(GL_QUADS);
		glMultiTexCoord3f(GL_TEXTURE0_ARB,0.0f*m_width, 0.0f*m_height, z*m_depth);		
		glMultiTexCoord3f(GL_TEXTURE1_ARB,0.0f, 0.0f, z);
		glMultiTexCoord3f(GL_TEXTURE2_ARB,0.0f-dx, 0.0f, z);
		glMultiTexCoord3f(GL_TEXTURE3_ARB,0.0f+dx, 0.0f, z);
		glMultiTexCoord3f(GL_TEXTURE4_ARB,0.0f, 0.0f-dy, z);
		glMultiTexCoord3f(GL_TEXTURE5_ARB,0.0f, 0.0f+dy, z);
		glMultiTexCoord3f(GL_TEXTURE6_ARB,0.0f, 0.0f, z-dz);
		glMultiTexCoord3f(GL_TEXTURE7_ARB,0.0f, 0.0f, z+dz);
		glVertex3f(-1.0f, -1.0f ,z);
		
		glMultiTexCoord3f(GL_TEXTURE0_ARB,1.0f*m_width, 0.0f*m_height, z*m_depth);
		glMultiTexCoord3f(GL_TEXTURE1_ARB,1.0f, 0.0f, z);
		glMultiTexCoord3f(GL_TEXTURE2_ARB,1.0f-dx, 0.0f, z);
		glMultiTexCoord3f(GL_TEXTURE3_ARB,1.0f+dx, 0.0f, z);
		glMultiTexCoord3f(GL_TEXTURE4_ARB,1.0f, 0.0f-dy, z);
		glMultiTexCoord3f(GL_TEXTURE5_ARB,1.0f, 0.0f+dy, z);
		glMultiTexCoord3f(GL_TEXTURE6_ARB,1.0f, 0.0f, z-dz);
		glMultiTexCoord3f(GL_TEXTURE7_ARB,1.0f, 0.0f, z+dz);
		glVertex3f(1.0f, -1.0f,z);

		glMultiTexCoord3f(GL_TEXTURE0_ARB,1.0f*m_width, 1.0f*m_height, z*m_depth);
		glMultiTexCoord3f(GL_TEXTURE1_ARB,1.0f, 1.0f, z);
		glMultiTexCoord3f(GL_TEXTURE2_ARB,1.0f-dx, 1.0f, z);
		glMultiTexCoord3f(GL_TEXTURE3_ARB,1.0f+dx, 1.0f, z);
		glMultiTexCoord3f(GL_TEXTURE4_ARB,1.0f, 1.0f-dy, z);
		glMultiTexCoord3f(GL_TEXTURE5_ARB,1.0f, 1.0f+dy, z);
		glMultiTexCoord3f(GL_TEXTURE6_ARB,1.0f, 1.0f, z-dz);
		glMultiTexCoord3f(GL_TEXTURE7_ARB,1.0f, 1.0f, z+dz);
		glVertex3f(1.0f, 1.0f,z);

		glMultiTexCoord3f(GL_TEXTURE0_ARB,0.0f*m_width, 1.0f*m_height, z*m_depth);
		glMultiTexCoord3f(GL_TEXTURE1_ARB,0.0f, 1.0f, z);
		glMultiTexCoord3f(GL_TEXTURE2_ARB,0.0f-dx, 1.0f, z);
		glMultiTexCoord3f(GL_TEXTURE3_ARB,0.0f+dx, 1.0f, z);
		glMultiTexCoord3f(GL_TEXTURE4_ARB,0.0f, 1.0f-dy, z);
		glMultiTexCoord3f(GL_TEXTURE5_ARB,0.0f, 1.0f+dy, z);
		glMultiTexCoord3f(GL_TEXTURE6_ARB,0.0f, 1.0f, z-dz);
		glMultiTexCoord3f(GL_TEXTURE7_ARB,0.0f, 1.0f, z+dz);
		glVertex3f(-1.0f, 1.0f,z);

    glEnd();
}
Ejemplo n.º 9
0
void DrawBox(GLfloat size, GLfloat texScale)
{
    size *= 0.5f;

    glBegin(GL_QUADS);
        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0.0f);
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, 0.0f, 0.0f);  // tangent
        glMultiTexCoord3f(GL_TEXTURE2, 0.0f, 1.0f, 0.0f);  // binormal
        glMultiTexCoord3f(GL_TEXTURE3, 0.0f, 0.0f, -1.0f); // normal
        glVertex3f(-size, -size, -size);
        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, texScale);
        glVertex3f(-size, size, -size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, texScale);
        glVertex3f(size, size, -size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, 0.0f);
        glVertex3f(size, -size, -size);

        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0.0f);
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, 0.0f, 0.0f);// tangent
        glMultiTexCoord3f(GL_TEXTURE2, 0.0f, 1.0f, 0.0f); // binormal
        glMultiTexCoord3f(GL_TEXTURE3, 0.0f, 0.0f, 1.0f); // normal
        glVertex3f(size, -size, size);
        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, texScale);
        glVertex3f(size, size, size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, texScale);
        glVertex3f(-size, size, size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, 0.0f);
        glVertex3f(-size, -size, size);

        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0.0f);
        glMultiTexCoord3f(GL_TEXTURE1, 0.0f, 0.0f, 1.0f); // tangent
        glMultiTexCoord3f(GL_TEXTURE2, 0.0f, 1.0f, 0.0f); // binormal
        glMultiTexCoord3f(GL_TEXTURE3, 1.0f, 0.0f, 0.0f); // normal
        glVertex3f(size, -size, -size);
        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, texScale);
        glVertex3f(size, size, -size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, texScale);
        glVertex3f(size, size, size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, 0.0f);
        glVertex3f(size, -size, size);

        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0.0f);
        glMultiTexCoord3f(GL_TEXTURE1, 0.0f, 0.0f, -1.0f); // tangent
        glMultiTexCoord3f(GL_TEXTURE2, 0.0f, 1.0f, 0.0f);  // binormal
        glMultiTexCoord3f(GL_TEXTURE3, -1.0f, 0.0f, 0.0f); // normal
        glVertex3f(-size, -size, size);
        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, texScale);
        glVertex3f(-size, size, size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, texScale);
        glVertex3f(-size, size, -size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, 0.0f);
        glVertex3f(-size, -size, -size);

        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0.0f);
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, 0.0f, 0.0f); // tangent
        glMultiTexCoord3f(GL_TEXTURE2, 0.0f, 0.0f, 1.0f); // binormal
        glMultiTexCoord3f(GL_TEXTURE3, 0.0f, 1.0f, 0.0f); // normal
        glVertex3f(-size, size, -size);
        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, texScale);
        glVertex3f(-size, size, size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, texScale);
        glVertex3f(size, size, size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, 0.0f);
        glVertex3f(size, size, -size);

        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0.0f);
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, 0.0f, 0.0f);  // tangent
        glMultiTexCoord3f(GL_TEXTURE2, 0.0f, 0.0f, -1.0f); // binormal
        glMultiTexCoord3f(GL_TEXTURE3, 0.0f, -1.0f, 0.0f); // normal
        glVertex3f(-size, -size, size);
        glMultiTexCoord2f(GL_TEXTURE0, 0.0f, texScale);
        glVertex3f(-size, -size, -size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, texScale);
        glVertex3f(size, -size, -size);
        glMultiTexCoord2f(GL_TEXTURE0, texScale, 0.0f);
        glVertex3f(size, -size, size);
    glEnd();
}
void MyGLImageViewer::drawQuads(float x, float y, float z, GLenum target) {
	
	bool color = true;
	glBegin(GL_QUADS);
	//front
	if(color) glColor3f(0, 1, 1);
	glMultiTexCoord3f(target, 0.0f, 1.0f, 1.0f);
	glVertex3f(-x, y, z);	//0
	if(color) glColor3f(0, 0, 1);
	glMultiTexCoord3f(target, 0.0f, 0.0f, 1.0f);
	glVertex3f(-x, -y, z);	//1
	if(color) glColor3f(1, 0, 1);
	glMultiTexCoord3f(target, 1.0f, 0.0f, 1.0f);
	glVertex3f(x, -y, z);	//2
	if(color) glColor3f(1, 1, 1);
	glMultiTexCoord3f(target, 1.0f, 1.0f, 1.0f);
	glVertex3f(x, y, z);	//3
	
	//left
	if(color) glColor3f(0, 1, 0);
	glMultiTexCoord3f(target, 0.0f, 1.0f, 0.0f);
	glVertex3f(-x, y, -z);	//4
	if(color) glColor3f(0, 0, 0);
	glMultiTexCoord3f(target, 0.0f, 0.0f, 0.0f);
	glVertex3f(-x, -y, -z);	//5
	if(color) glColor3f(0, 0, 1);
	glMultiTexCoord3f(target, 0.0f, 0.0f, 1.0f);
	glVertex3f(-x, -y, z);	//1
	if(color) glColor3f(0, 1, 1);
	glMultiTexCoord3f(target, 0.0f, 1.0f, 1.0f);
	glVertex3f(-x, y, z);	//0

	//back
	if(color) glColor3f(1, 1, 0);
	glMultiTexCoord3f(target, 1.0f, 1.0f, 0.0f);
	glVertex3f(x, y, -z);	//7
	if(color) glColor3f(1, 0, 0);
	glMultiTexCoord3f(target, 1.0f, 0.0f, 0.0f);
	glVertex3f(x, -y, -z);	//6
	if(color) glColor3f(0, 0, 0);
	glMultiTexCoord3f(target, 0.0f, 0.0f, 0.0f);
	glVertex3f(-x, -y, -z);	//5
	if(color) glColor3f(0, 1, 0);
	glMultiTexCoord3f(target, 0.0f, 1.0f, 0.0f);
	glVertex3f(-x, y, -z);	//4

	//right
	if(color) glColor3f(1, 1, 1);
	glMultiTexCoord3f(target, 1.0f, 1.0f, 1.0f);
	glVertex3f(x, y, z);	//3
	if(color) glColor3f(1, 0, 1);
	glMultiTexCoord3f(target, 1.0f, 0.0f, 1.0f);
	glVertex3f(x, -y, z);	//2
	if(color) glColor3f(1, 0, 0);
	glMultiTexCoord3f(target, 1.0f, 0.0f, 0.0f);
	glVertex3f(x, -y, -z);	//6
	if(color) glColor3f(1, 1, 0);
	glMultiTexCoord3f(target, 1.0f, 1.0f, 0.0f);
	glVertex3f(x, y, -z);	//7

	//top
	if(color) glColor3f(0, 1, 0);
	glMultiTexCoord3f(target, 0.0f, 1.0f, 0.0f);
	glVertex3f(-x, y, -z);	//4
	if(color) glColor3f(0, 1, 1);
	glMultiTexCoord3f(target, 0.0f, 1.0f, 1.0f);
	glVertex3f(-x, y, z);	//0
	if(color) glColor3f(1, 1, 1);
	glMultiTexCoord3f(target, 1.0f, 1.0f, 1.0f);
	glVertex3f(x, y, z);	//3
	if(color) glColor3f(1, 1, 0);
	glMultiTexCoord3f(target, 1.0f, 1.0f, 0.0f);
	glVertex3f(x, y, -z);	//7

	//bottom
	if(color) glColor3f(1, 0, 0);
	glMultiTexCoord3f(target, 1.0f, 0.0f, 0.0f);
	glVertex3f(x, -y, -z);	//6
	if(color) glColor3f(1, 0, 1);
	glMultiTexCoord3f(target, 1.0f, 0.0f, 1.0f);
	glVertex3f(x, -y, z);	//2
	if(color) glColor3f(0, 0, 1);
	glMultiTexCoord3f(target, 0.0f, 0.0f, 1.0f);
	glVertex3f(-x, -y, z);	//1
	if(color) glColor3f(0, 0, 0);
	glMultiTexCoord3f(target, 0.0f, 0.0f, 0.0f);
	glVertex3f(-x, -y, -z);	//5
	
	glEnd();

}
Ejemplo n.º 11
0
void Cubemap::render(const Camera& cam)
{
	unsigned int TEX_ID = active_texture;
	glPushAttrib( GL_ALL_ATTRIB_BITS );
    glPushClientAttrib( GL_CLIENT_ALL_ATTRIB_BITS );

    const Vector3 dir = cam.get_direction();
    const Vector3 up = cam.get_up();

    // Reset and transform the matrix.
	glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    gluPerspective(cam.get_fov_degrees(),
				   cam.get_aspect_ratio(),
				   cam.get_near_clip(),
				   DBL_MAX);
	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();
	glLoadIdentity();
    gluLookAt(0,0,0, dir.x, dir.y, dir.z, up.x, up.y, up.z);

	glActiveTexture(GL_TEXTURE0 + TEX_ID);

    glEnable(GL_TEXTURE_CUBE_MAP);
	glEnable(GL_TEXTURE_2D);
    //glDisable(GL_DEPTH_TEST);
    glDisable(GL_LIGHTING);
    //glDisable(GL_BLEND);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

    // Just in case we set all vertices to white.
    glColor4f(1,1,1,1);

    float fe = 150.0;

    glBegin(GL_QUADS);

    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, -1.0, -1.0);
    glVertex3f(fe, -fe, -fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, -1.0, -1.0);
    glVertex3f(-fe, -fe, -fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, 1.0, -1.0);
    glVertex3f(-fe, fe, -fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, 1.0, -1.0);
    glVertex3f(fe, fe, -fe);

    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, -1.0, 1.0);
    glVertex3f(fe, -fe, fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, -1.0, -1.0);
    glVertex3f(fe, -fe, -fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, 1.0, -1.0);
    glVertex3f(fe, fe, -fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, 1.0, 1.0);
    glVertex3f(fe, fe, fe);

    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, -1.0, 1.0);
    glVertex3f(-fe, -fe, fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, -1.0, 1.0);
    glVertex3f(fe, -fe, fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, 1.0, 1.0);
    glVertex3f(fe, fe, fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, 1.0, 1.0);
    glVertex3f(-fe, fe, fe);

    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, -1.0, -1.0);
    glVertex3f(-fe, -fe, -fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, -1.0, 1.0);
    glVertex3f(-fe, -fe, fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, 1.0, 1.0);
    glVertex3f(-fe, fe, fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, 1.0, -1.0);
    glVertex3f(-fe, fe, -fe);

    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, 1.0, -1.0);
    glVertex3f(-fe, fe, -fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, 1.0, 1.0);
    glVertex3f(-fe, fe, fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, 1.0, 1.0);
    glVertex3f(fe, fe, fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, 1.0, -1.0);
    glVertex3f(fe, fe, -fe);

    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, -1.0, -1.0);
    glVertex3f(-fe, -fe, -fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, -1.0, -1.0, 1.0);
    glVertex3f(-fe, -fe, fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, -1.0, 1.0);
    glVertex3f(fe, -fe, fe);
    glMultiTexCoord3f(GL_TEXTURE0 + TEX_ID, 1.0, -1.0, -1.0);
    glVertex3f(fe, -fe, -fe);

    glEnd();

    // Restore enable bits and matrix

	glMatrixMode(GL_PROJECTION);
    glPopMatrix();

	glMatrixMode(GL_MODELVIEW);
	glPopMatrix();

	glDisable(GL_TEXTURE_CUBE_MAP);

	glActiveTexture(GL_TEXTURE0);

    glPopClientAttrib();
	glPopAttrib();

}
void drawVertex(float x,float y,float z){
    glColor3f(x,y,z);
    glMultiTexCoord3f(GL_TEXTURE1, x, y, z);
    glVertex3f(x,y,z);
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL13_nglMultiTexCoord3f(JNIEnv *__env, jclass clazz, jint texture, jfloat s, jfloat t, jfloat r, jlong __functionAddress) {
	glMultiTexCoord3fPROC glMultiTexCoord3f = (glMultiTexCoord3fPROC)(intptr_t)__functionAddress;
	UNUSED_PARAMS(__env, clazz)
	glMultiTexCoord3f(texture, s, t, r);
}
Ejemplo n.º 14
0
static void DoFrame(void)
{
	static float Local[3][4] = {
		{ 1.0, 0.8, 1.0, 1.0 },
		{ 0.5, 0.5, 0.5, 1.0 },
		{ 1.0, 0.0, 0.0, 1.0 }
	};
	static float Local2[3][4] = {
		{ 0.8, 1.0, 1.0, 1.0 },
		{ 0.5, 0.5, 0.5, 1.0 },
		{ 1.0, 0.0, 1.0, 1.0 }
	};
	int i;

	glClearColor(0.8, 0.8, 0.8, 0.8);
	glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

	glActiveTexture(GL_TEXTURE0);
	glBindTexture(GL_TEXTURE_2D, TexDiffuse);
	glEnable(GL_TEXTURE_2D);

	glActiveTexture(GL_TEXTURE1);
	glBindTexture(GL_TEXTURE_2D, TexNormal);
	glEnable(GL_TEXTURE_2D);

	glActiveTexture(GL_TEXTURE2);
	glBindTexture(GL_TEXTURE_2D, TexSpecular);
	glEnable(GL_TEXTURE_2D);

	glActiveTexture(GL_TEXTURE3);
	glBindTexture(GL_TEXTURE_2D, TexLookup);
	glEnable(GL_TEXTURE_2D);

	glActiveTexture(GL_TEXTURE4);
	glBindTexture(GL_TEXTURE_2D, TexLookup);
	glEnable(GL_TEXTURE_2D);

	glActiveTexture(GL_TEXTURE5);
	glBindTexture(GL_TEXTURE_2D, TexLookup);
	glEnable(GL_TEXTURE_2D);

	glMultiTexCoord2f(GL_TEXTURE0, 0.0, 0.0);
	glMultiTexCoord2f(GL_TEXTURE1, 0.0, 0.0);
	glMultiTexCoord2f(GL_TEXTURE2, 0.0, 0.0);
	glMultiTexCoord3f(GL_TEXTURE3, 0.0, 0.05, 0.25);
	glMultiTexCoord3f(GL_TEXTURE4, 4, -3, 0);
	glMultiTexCoord3f(GL_TEXTURE5, 0, 3, 4);

	glEnable(GL_FRAGMENT_PROGRAM_ARB);
	for(i = 0; i < 3; ++i)
		glProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, i, Local[i]);

	glBegin(GL_QUADS);
		glVertex2f(0.75, 0.75);
		glVertex2f(0.25, 0.75);
		glVertex2f(0.25, 0.25);
		glVertex2f(0.75, 0.25);
	glEnd();

	glEnable(GL_FRAGMENT_PROGRAM_ARB);
	for(i = 0; i < 3; ++i)
		glProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, i, Local2[i]);

	glBegin(GL_QUADS);
		glVertex2f(1.75, 0.75);
		glVertex2f(1.25, 0.75);
		glVertex2f(1.25, 0.25);
		glVertex2f(1.75, 0.25);
	glEnd();
}
Ejemplo n.º 15
0
///////////////////////////////////////////////////////////
// Draw the skybox. This is just six quads, with texture
// coordinates set to the corners of the cube map
void DrawSkyBox(void)
    {
    GLfloat fExtent = 15.0f;
    
    glBegin(GL_QUADS);
        //////////////////////////////////////////////
        // Negative X
        // Note, we must now use the multi-texture version of glTexCoord
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, -1.0f, 1.0f);
        glVertex3f(-fExtent, -fExtent, fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, -1.0f, -1.0f);
        glVertex3f(-fExtent, -fExtent, -fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, 1.0f, -1.0f);
        glVertex3f(-fExtent, fExtent, -fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, 1.0f, 1.0f);
        glVertex3f(-fExtent, fExtent, fExtent);


        ///////////////////////////////////////////////
        //  Postive X
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, -1.0f, -1.0f);
        glVertex3f(fExtent, -fExtent, -fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, -1.0f, 1.0f);
        glVertex3f(fExtent, -fExtent, fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, 1.0f, 1.0f);
        glVertex3f(fExtent, fExtent, fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, 1.0f, -1.0f);
        glVertex3f(fExtent, fExtent, -fExtent);
 

        ////////////////////////////////////////////////
        // Negative Z 
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, -1.0f, -1.0f);
        glVertex3f(-fExtent, -fExtent, -fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, -1.0f, -1.0f);
        glVertex3f(fExtent, -fExtent, -fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, 1.0f, -1.0f);
        glVertex3f(fExtent, fExtent, -fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, 1.0f, -1.0f);
        glVertex3f(-fExtent, fExtent, -fExtent);


        ////////////////////////////////////////////////
        // Positive Z 
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, -1.0f, 1.0f);
        glVertex3f(fExtent, -fExtent, fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, -1.0f, 1.0f);
        glVertex3f(-fExtent, -fExtent, fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, 1.0f, 1.0f);
        glVertex3f(-fExtent, fExtent, fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, 1.0f, 1.0f);
        glVertex3f(fExtent, fExtent, fExtent);


        //////////////////////////////////////////////////
        // Positive Y
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, 1.0f, 1.0f);
        glVertex3f(-fExtent, fExtent, fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, 1.0f, -1.0f);
        glVertex3f(-fExtent, fExtent, -fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, 1.0f, -1.0f);
        glVertex3f(fExtent, fExtent, -fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, 1.0f, 1.0f);
        glVertex3f(fExtent, fExtent, fExtent);
  
    
        ///////////////////////////////////////////////////
        // Negative Y
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, -1.0f, -1.0f);
        glVertex3f(-fExtent, -fExtent, -fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, -1.0f, -1.0f, 1.0f);
        glVertex3f(-fExtent, -fExtent, fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, -1.0f, 1.0f);
        glVertex3f(fExtent, -fExtent, fExtent);
        
        glMultiTexCoord3f(GL_TEXTURE1, 1.0f, -1.0f, -1.0f);
        glVertex3f(fExtent, -fExtent, -fExtent);
    glEnd();
    }
Ejemplo n.º 16
0
void drawTexQuad()
{glUseProgram(0);
//glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texname);
	glColor4f(1,1,1,1);
	glTranslatef(-1.01,1.01,0);
	glBegin(GL_QUADS);
	glMultiTexCoord3f(GL_TEXTURE0, 0, 0, 0);
	glVertex3f(-1, -1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 1, 0, 0);
	glVertex3f(1, -1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 1, 1, 0);
	glVertex3f(1, 1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 0, 1, 0);
	glVertex3f(-1, 1, 0);
	glEnd();
	
//glActiveTexture(GL_TEXTURE1);	
glBindTexture(GL_TEXTURE_2D, dnname);
	glTranslatef(2.02,0,0);
	glBegin(GL_QUADS);
	glMultiTexCoord3f(GL_TEXTURE0, 0, 0, 0);
	glVertex3f(-1, -1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 1, 0, 0);
	glVertex3f(1, -1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 1, 1, 0);
	glVertex3f(1, 1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 0, 1, 0);
	glVertex3f(-1, 1, 0);
	glEnd();
	
	glBindTexture(GL_TEXTURE_2D, upname);
	glTranslatef(0,-2.02,0);
	glBegin(GL_QUADS);
	glMultiTexCoord3f(GL_TEXTURE0, 0, 0, 0);
	glVertex3f(-1, -1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 1, 0, 0);
	glVertex3f(1, -1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 1, 1, 0);
	glVertex3f(1, 1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 0, 1, 0);
	glVertex3f(-1, 1, 0);
	glEnd();
	
	glBindTexture(GL_TEXTURE_2D, fnname);
	glTranslatef(-2.02,0,0);
	glBegin(GL_QUADS);
	glMultiTexCoord3f(GL_TEXTURE0, 0, 0, 0);
	glVertex3f(-1, -1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 1, 0, 0);
	glVertex3f(1, -1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 1, 1, 0);
	glVertex3f(1, 1, 0);
	glMultiTexCoord3f(GL_TEXTURE0, 0, 1, 0);
	glVertex3f(-1, 1, 0);
	glEnd();
}