Fog color fix; refactoring
- fixed fog color setting - removed unused glSecondaryColor and altered struct VertexCol - minor refactoring in CTextdev-ui
parent
b06544871a
commit
45fd8aad33
|
@ -69,36 +69,28 @@ struct Vertex
|
|||
|
||||
/**
|
||||
* \struct VertexCol
|
||||
* \brief Vertex with color information
|
||||
*
|
||||
* This structure was created as analog to DirectX's D3DLVERTEX.
|
||||
* \brief Colored vertex
|
||||
*
|
||||
* It contains:
|
||||
* - vertex coordinates (x,y,z) as Math::Vector,
|
||||
* - RGBA color as Color,
|
||||
* - RGBA specular color as Color,
|
||||
* - texture coordinates (u,v) as Math::Point.
|
||||
* - RGBA color as Color
|
||||
*/
|
||||
struct VertexCol
|
||||
{
|
||||
Math::Vector coord;
|
||||
Color color;
|
||||
Color specular;
|
||||
Math::Point texCoord;
|
||||
|
||||
explicit VertexCol(Math::Vector aCoord = Math::Vector(),
|
||||
Color aColor = Color(),
|
||||
Color aSpecular = Color(),
|
||||
Math::Point aTexCoord = Math::Point())
|
||||
: coord(aCoord), color(aColor), specular(aSpecular), texCoord(aTexCoord) {}
|
||||
: coord(aCoord), color(aColor) {}
|
||||
|
||||
//! Returns a string "(c: [...], col: [...], sp: [...], tc: [...])"
|
||||
//! Returns a string "(c: [...], col: [...])"
|
||||
inline std::string ToString() const
|
||||
{
|
||||
std::stringstream s;
|
||||
s.precision(3);
|
||||
s << "(c: " << coord.ToString() << ", col: " << color.ToString() << ", sp: "
|
||||
<< specular.ToString() << ", tc: " << texCoord.ToString() << ")";
|
||||
s << "(c: " << coord.ToString() << ", col: " << color.ToString() << ")";
|
||||
return s.str();
|
||||
}
|
||||
};
|
||||
|
|
|
@ -3417,10 +3417,10 @@ void CEngine::DrawBackgroundGradient(const Color& up, const Color& down)
|
|||
|
||||
VertexCol vertex[4] =
|
||||
{
|
||||
VertexCol(Math::Vector(p1.x, p1.y, 0.0f), color[1], color[2]),
|
||||
VertexCol(Math::Vector(p1.x, p2.y, 0.0f), color[0], color[2]),
|
||||
VertexCol(Math::Vector(p2.x, p1.y, 0.0f), color[1], color[2]),
|
||||
VertexCol(Math::Vector(p2.x, p2.y, 0.0f), color[0], color[2])
|
||||
VertexCol(Math::Vector(p1.x, p1.y, 0.0f), color[1]),
|
||||
VertexCol(Math::Vector(p1.x, p2.y, 0.0f), color[0]),
|
||||
VertexCol(Math::Vector(p2.x, p1.y, 0.0f), color[1]),
|
||||
VertexCol(Math::Vector(p2.x, p2.y, 0.0f), color[0])
|
||||
};
|
||||
|
||||
m_device->DrawPrimitive(PRIMITIVE_TRIANGLE_STRIP, vertex, 4);
|
||||
|
@ -3567,10 +3567,10 @@ void CEngine::DrawOverColor()
|
|||
|
||||
VertexCol vertex[4] =
|
||||
{
|
||||
VertexCol(Math::Vector(p1.x, p1.y, 0.0f), color[1], color[2]),
|
||||
VertexCol(Math::Vector(p1.x, p2.y, 0.0f), color[0], color[2]),
|
||||
VertexCol(Math::Vector(p2.x, p1.y, 0.0f), color[1], color[2]),
|
||||
VertexCol(Math::Vector(p2.x, p2.y, 0.0f), color[0], color[2])
|
||||
VertexCol(Math::Vector(p1.x, p1.y, 0.0f), color[1]),
|
||||
VertexCol(Math::Vector(p1.x, p2.y, 0.0f), color[0]),
|
||||
VertexCol(Math::Vector(p2.x, p1.y, 0.0f), color[1]),
|
||||
VertexCol(Math::Vector(p2.x, p2.y, 0.0f), color[0])
|
||||
};
|
||||
|
||||
m_device->DrawPrimitive(PRIMITIVE_TRIANGLE_STRIP, vertex, 4);
|
||||
|
|
|
@ -511,9 +511,10 @@ void CText::DrawString(const std::string &text, const std::vector<FontMetaChar>
|
|||
|
||||
unsigned int fmtIndex = 0;
|
||||
|
||||
std::vector<UTF8Char> chars = StringToUTFCharList(text);
|
||||
for(auto it=chars.begin(); it != chars.end(); ++it){
|
||||
|
||||
std::vector<UTF8Char> chars;
|
||||
StringToUTFCharList(text, chars);
|
||||
for (auto it = chars.begin(); it != chars.end(); ++it)
|
||||
{
|
||||
font = static_cast<FontType>(format[fmtIndex] & FONT_MASK_FONT);
|
||||
|
||||
// TODO: if (font == FONT_BUTTON)
|
||||
|
@ -546,8 +547,8 @@ void CText::DrawString(const std::string &text, const std::vector<FontMetaChar>
|
|||
// TODO: eol
|
||||
}
|
||||
|
||||
std::vector<UTF8Char> CText::StringToUTFCharList(const std::string &text) {
|
||||
std::vector<UTF8Char> v;
|
||||
void CText::StringToUTFCharList(const std::string &text, std::vector<UTF8Char> &chars)
|
||||
{
|
||||
unsigned int index = 0;
|
||||
while (index < text.length())
|
||||
{
|
||||
|
@ -563,9 +564,8 @@ std::vector<UTF8Char> CText::StringToUTFCharList(const std::string &text) {
|
|||
|
||||
index += len;
|
||||
|
||||
v.push_back(ch);
|
||||
chars.push_back(ch);
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
void CText::DrawString(const std::string &text, FontType font,
|
||||
|
@ -575,8 +575,10 @@ void CText::DrawString(const std::string &text, FontType font,
|
|||
|
||||
m_engine->SetState(ENG_RSTATE_TEXT);
|
||||
|
||||
std::vector<UTF8Char> chars = StringToUTFCharList(text);
|
||||
for(auto it=chars.begin(); it != chars.end(); ++it){
|
||||
std::vector<UTF8Char> chars;
|
||||
StringToUTFCharList(text, chars);
|
||||
for (auto it = chars.begin(); it != chars.end(); ++it)
|
||||
{
|
||||
DrawCharAndAdjustPos(*it, font, size, pos);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -293,8 +293,7 @@ protected:
|
|||
float size, Math::Point pos, float width, int eol);
|
||||
void DrawHighlight(FontHighlight hl, Math::Point pos, Math::Point size);
|
||||
void DrawCharAndAdjustPos(UTF8Char ch, FontType font, float size, Math::Point &pos);
|
||||
std::vector<UTF8Char>
|
||||
StringToUTFCharList(const std::string &text);
|
||||
void StringToUTFCharList(const std::string &text, std::vector<UTF8Char> &chars);
|
||||
|
||||
protected:
|
||||
CInstanceManager* m_iMan;
|
||||
|
|
|
@ -101,7 +101,7 @@ bool CGLDevice::Create()
|
|||
return false;
|
||||
}
|
||||
|
||||
if ( (! GLEW_ARB_multitexture) || (! GLEW_EXT_texture_env_combine) || (! GLEW_EXT_secondary_color) )
|
||||
if ( (! GLEW_ARB_multitexture) || (! GLEW_EXT_texture_env_combine) )
|
||||
{
|
||||
GetLogger()->Error("GLEW reports required extensions not supported\n");
|
||||
return false;
|
||||
|
@ -887,8 +887,6 @@ void CGLDevice::DrawPrimitive(PrimitiveType type, const VertexCol *vertices, int
|
|||
for (int i = 0; i < vertexCount; ++i)
|
||||
{
|
||||
glColor4fv(const_cast<GLfloat*>(vertices[i].color.Array()));
|
||||
glSecondaryColor3fv(const_cast<GLfloat*>(vertices[i].specular.Array()));
|
||||
glMultiTexCoord2fv(GL_TEXTURE0, const_cast<GLfloat*>(vertices[i].texCoord.Array()));
|
||||
glVertex3fv(const_cast<GLfloat*>(vertices[i].coord.Array()));
|
||||
}
|
||||
|
||||
|
@ -1244,6 +1242,7 @@ void CGLDevice::SetFogParams(FogMode mode, const Color &color, float start, floa
|
|||
glFogf(GL_FOG_START, start);
|
||||
glFogf(GL_FOG_END, end);
|
||||
glFogf(GL_FOG_DENSITY, density);
|
||||
glFogfv(GL_FOG_COLOR, color.Array());
|
||||
}
|
||||
|
||||
void CGLDevice::GetFogParams(FogMode &mode, Color &color, float &start, float &end, float &density)
|
||||
|
@ -1258,6 +1257,9 @@ void CGLDevice::GetFogParams(FogMode &mode, Color &color, float &start, float &e
|
|||
glGetFloatv(GL_FOG_START, static_cast<GLfloat*>(&start));
|
||||
glGetFloatv(GL_FOG_END, static_cast<GLfloat*>(&end));
|
||||
glGetFloatv(GL_FOG_DENSITY, static_cast<GLfloat*>(&density));
|
||||
GLfloat col[4] = { 0.0f };
|
||||
glGetFloatv(GL_FOG_COLOR, col);
|
||||
color = Color(col[0], col[1], col[2], col[3]);
|
||||
}
|
||||
|
||||
void CGLDevice::SetCullMode(CullMode mode)
|
||||
|
|
|
@ -190,10 +190,10 @@ void CColor::Draw()
|
|||
m_engine->SetTexture(""); // no texture
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
|
||||
vertex[0] = Gfx::VertexCol(Math::Vector(p1.x, p1.y, 0.0f), color, Gfx::Color(), Math::Point(0.0f, 0.0f));
|
||||
vertex[1] = Gfx::VertexCol(Math::Vector(p1.x, p2.y, 0.0f), color, Gfx::Color(), Math::Point(0.0f, 0.0f));
|
||||
vertex[2] = Gfx::VertexCol(Math::Vector(p2.x, p1.y, 0.0f), color, Gfx::Color(), Math::Point(0.0f, 0.0f));
|
||||
vertex[3] = Gfx::VertexCol(Math::Vector(p2.x, p2.y, 0.0f), color, Gfx::Color(), Math::Point(0.0f, 0.0f));
|
||||
vertex[0] = Gfx::VertexCol(Math::Vector(p1.x, p1.y, 0.0f), color);
|
||||
vertex[1] = Gfx::VertexCol(Math::Vector(p1.x, p2.y, 0.0f), color);
|
||||
vertex[2] = Gfx::VertexCol(Math::Vector(p2.x, p1.y, 0.0f), color);
|
||||
vertex[3] = Gfx::VertexCol(Math::Vector(p2.x, p2.y, 0.0f), color);
|
||||
|
||||
device = m_engine->GetDevice();
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 4);
|
||||
|
|
Loading…
Reference in New Issue