Exemple #1
0
Shader::~Shader(void)
{
	GET_CONTEXT();

	unUse();
    glDeleteProgram(m_program);
}
Exemple #2
0
	void GLTexture::draw()
	{
		use();
		glPushAttrib(GL_VIEWPORT_BIT);
		glViewport(0,0, m_width, m_height);
		glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
		glMatrixMode (GL_PROJECTION);
		glPushMatrix();
		glLoadIdentity ();
		glMatrixMode (GL_MODELVIEW);
		glPushMatrix();
		glLoadIdentity();

		glBegin(GL_QUADS);
		glTexCoord2f(0.0f, 0.0f); glVertex2f(-1.0f, -1.0f);
		glTexCoord2f(1.0f, 0.0f); glVertex2f( 1.0f, -1.0f);
		glTexCoord2f(1.0f, 1.0f); glVertex2f( 1.0f,  1.0f);
		glTexCoord2f(0.0f, 1.0f); glVertex2f(-1.0f,  1.0f);
		glEnd();

		glMatrixMode (GL_PROJECTION);
		glPopMatrix();
		glMatrixMode (GL_MODELVIEW);
		glPopMatrix();
		glPopAttrib();
		unUse();
		printOpenGLError();
	}
Exemple #3
0
bool Texture::load(char* fileName)
{
	glActiveTexture(GL_TEXTURE1);
	glGenTextures(1, &m_textureID);
	glBindTexture(GL_TEXTURE_2D, m_textureID);

	int bytesPerPixel = 0;

	unsigned char* data = stbi_load(fileName, &m_width, &m_heigth, &bytesPerPixel, 0);

	//flip image vertically
	unsigned char* s = data;
	for (int y = 0; y<m_heigth / 2; y++)
	{
		unsigned char* e = data + (m_heigth - y - 1)*m_width*bytesPerPixel;
		for (int x = 0; x<m_width*bytesPerPixel; x++)
		{
			unsigned char temp = *s;
			*s = *e;
			*e = temp;
			s++;
			e++;
		}
	}

	//send image data to the new texture
	if (bytesPerPixel < 3)
	{
		printf("ERROR: Unable to load texture image %s\n", fileName);
		return false;
	}
	else if (bytesPerPixel == 3)
	{
		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, m_width, m_heigth, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
	}
	else if (bytesPerPixel == 4)
	{
		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_width, m_heigth, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
	}
	else
	{
		printf("RESOLVED: Unknown format for bytes per pixel in texture image %s, changed to 4\n", fileName);
		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_width, m_heigth, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
	}

	stbi_image_free(data);
	glGenerateMipmap(GL_TEXTURE_2D);

	printf("SUCCESS: Texture image %s loaded\n", filepath);

	unUse();

	return true;
}
Exemple #4
0
	void GLTexture::setGLTextureParameter(GLenum target, GLenum pname, GLfloat param)
	{
		use();
		glTexParameterf(target, pname, param);
		unUse();
	}