|
From: <axl...@us...> - 2009-07-31 00:59:21
|
Revision: 443
http://hgengine.svn.sourceforge.net/hgengine/?rev=443&view=rev
Author: axlecrusher
Date: 2009-07-31 00:59:08 +0000 (Fri, 31 Jul 2009)
Log Message:
-----------
allow other color types besides RGBA
Modified Paths:
--------------
Mercury2/src/GLHelpers.cpp
Mercury2/src/GLHelpers.h
Mercury2/src/MercuryFBO.cpp
Mercury2/src/Orthographic.cpp
Mercury2/src/RawImageData.h
Mercury2/src/Texture.cpp
Mercury2/src/Texture.h
Modified: Mercury2/src/GLHelpers.cpp
===================================================================
--- Mercury2/src/GLHelpers.cpp 2009-07-31 00:55:58 UTC (rev 442)
+++ Mercury2/src/GLHelpers.cpp 2009-07-31 00:59:08 UTC (rev 443)
@@ -78,6 +78,30 @@
return MercuryVertex( (float)mouseX, (float)mouseY, (float)mouseZ );
}
+GLenum ToGLColorType(ColorByteType cbt)
+{
+ switch (cbt)
+ {
+ case WHITE:
+ return GL_LUMINANCE;
+ case WHITE_ALPHA:
+ return GL_LUMINANCE_ALPHA;
+ case RGB:
+ return GL_RGB;
+ case RGBA:
+ return GL_RGBA;
+ case RGB16:
+ return GL_RGBA16;
+ case RGBA16:
+ return GL_RGBA16;
+ break;
+ default:
+ printf( "Unsupported color byte type (%d)\n", cbt );
+ return GL_RGB;
+ }
+
+}
+
/****************************************************************************
* Copyright (C) 2009 by Joshua Allen *
* *
Modified: Mercury2/src/GLHelpers.h
===================================================================
--- Mercury2/src/GLHelpers.h 2009-07-31 00:55:58 UTC (rev 442)
+++ Mercury2/src/GLHelpers.h 2009-07-31 00:59:08 UTC (rev 443)
@@ -3,10 +3,13 @@
#include <MercuryMatrix.h>
#include <MercuryVertex.h>
+#include <RawImageData.h>
+
MString GlError2String(uint32_t e);
void glLoadMatrix(const MercuryMatrix& m);
MercuryMatrix glGetMatrix(int m);
MercuryVertex pointFromScreenLoc(int screen_x, int screen_y);
+GLenum ToGLColorType(ColorByteType cbt);
/****************************************************************************
* Copyright (C) 2009 by Joshua Allen *
Modified: Mercury2/src/MercuryFBO.cpp
===================================================================
--- Mercury2/src/MercuryFBO.cpp 2009-07-31 00:55:58 UTC (rev 442)
+++ Mercury2/src/MercuryFBO.cpp 2009-07-31 00:59:08 UTC (rev 443)
@@ -46,7 +46,7 @@
{
MString n = ssprintf("%s_%d", m_name.c_str(), i);
m_textures[i] = Texture::LoadDynamicTexture(n);
- m_textures[i]->MakeDynamic(m_width, m_height,n);
+ m_textures[i]->MakeDynamic(m_width, m_height, RGBA, n);
}
}
@@ -90,7 +90,7 @@
for (uint8_t i = 0; i < m_numTextures; ++i)
{
MString n = ssprintf("%s_%d", m_name.c_str(), i);
- m_textures[i]->MakeDynamic(m_width, m_height,n);
+ m_textures[i]->MakeDynamic(m_width, m_height, RGBA, n);
}
}
Bind();
Modified: Mercury2/src/Orthographic.cpp
===================================================================
--- Mercury2/src/Orthographic.cpp 2009-07-31 00:55:58 UTC (rev 442)
+++ Mercury2/src/Orthographic.cpp 2009-07-31 00:59:08 UTC (rev 443)
@@ -36,8 +36,6 @@
void Orthographic::LoadFromXML(const XMLNode& node)
{
- MercuryWindow* w = MercuryWindow::GetCurrentWindow();
-
m_frustum.Ortho( StrToFloat(node.Attribute("left")),
StrToFloat(node.Attribute("right")),
StrToFloat(node.Attribute("bottom")),
Modified: Mercury2/src/RawImageData.h
===================================================================
--- Mercury2/src/RawImageData.h 2009-07-31 00:55:58 UTC (rev 442)
+++ Mercury2/src/RawImageData.h 2009-07-31 00:59:08 UTC (rev 443)
@@ -6,7 +6,9 @@
WHITE,
WHITE_ALPHA,
RGB,
- RGBA
+ RGBA,
+ RGB16,
+ RGBA16,
};
class RawImageData
Modified: Mercury2/src/Texture.cpp
===================================================================
--- Mercury2/src/Texture.cpp 2009-07-31 00:55:58 UTC (rev 442)
+++ Mercury2/src/Texture.cpp 2009-07-31 00:59:08 UTC (rev 443)
@@ -49,28 +49,8 @@
if ( !m_textureID ) glGenTextures(1, &m_textureID);
// m_raw = raw;
- int ByteType;
+ GLenum byteType = ToGLColorType( m_raw->m_ColorByteType );
- switch (m_raw->m_ColorByteType)
- {
- case WHITE:
- ByteType = GL_LUMINANCE;
- break;
- case WHITE_ALPHA:
- ByteType = GL_LUMINANCE_ALPHA;
- break;
- case RGB:
- ByteType = GL_RGB;
- break;
- case RGBA:
- ByteType = GL_RGBA;
- break;
- default:
- printf( "Unsupported byte type (%d) in Texture::LoadFromRaw\n", m_raw->m_ColorByteType );
- ByteType = GL_RGB;
- break;
- }
-
glBindTexture(GL_TEXTURE_2D, m_textureID);
/*
glTexImage2D(GL_TEXTURE_2D,
@@ -83,7 +63,7 @@
GL_UNSIGNED_BYTE,
m_raw->m_data);
*/
- gluBuild2DMipmaps( GL_TEXTURE_2D, ByteType, m_raw->m_width, m_raw->m_height, ByteType, GL_UNSIGNED_BYTE, m_raw->m_data );
+ gluBuild2DMipmaps( GL_TEXTURE_2D, byteType, m_raw->m_width, m_raw->m_height, byteType, GL_UNSIGNED_BYTE, m_raw->m_data );
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
@@ -94,7 +74,7 @@
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
// gluBuild2DMipmaps( GL_TEXTURE_2D, 3, m_raw->m_width, m_raw->m_height, ByteType, GL_UNSIGNED_BYTE, m_raw->m_data );
-
+ SAFE_DELETE(m_raw);
};
void Texture::Render(const MercuryNode* node)
@@ -121,7 +101,7 @@
MString file = node.Attribute("file");
if ( dynamic )
- MakeDynamic( 0, 0, file );
+ MakeDynamic( 0, 0, RGBA, file );
else
LoadImagePath( file );
}
@@ -188,7 +168,7 @@
m_raw = raw;
}
-void Texture::MakeDynamic(uint16_t width, uint16_t height, const MString& name)
+void Texture::MakeDynamic(uint16_t width, uint16_t height, ColorByteType cbt, const MString& name)
{
// Clean();
@@ -200,7 +180,7 @@
if (m_textureID == 0) glGenTextures( 1, &m_textureID );
glBindTexture( GL_TEXTURE_2D, m_textureID );
- glCopyTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, width, height, 0 );
+ glCopyTexImage2D( GL_TEXTURE_2D, 0, ToGLColorType(cbt), 0, 0, width, height, 0 );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glBindTexture( GL_TEXTURE_2D, 0 );
Modified: Mercury2/src/Texture.h
===================================================================
--- Mercury2/src/Texture.h 2009-07-31 00:55:58 UTC (rev 442)
+++ Mercury2/src/Texture.h 2009-07-31 00:59:08 UTC (rev 443)
@@ -25,9 +25,8 @@
inline static uint32_t ReadAndResetBindCount() { uint32_t t = m_textureBinds; m_textureBinds = 0; return t; }
inline uint32_t TextureID() const { return m_textureID; }
- void MakeDynamic(uint16_t width, uint16_t height, const MString& name);
+ void MakeDynamic(uint16_t width, uint16_t height, ColorByteType cbt, const MString& name);
-
static Texture* Generate();
static MAutoPtr< Texture > LoadFromFile(const MString& path);
static MAutoPtr< Texture > LoadDynamicTexture(const MString& name);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|