Mercurial > fife-parpg
comparison engine/core/video/opengl/renderbackendopengl.cpp @ 583:47b49b9b0c0a
* Improved the floatingtextrenderer. Now you can set an alpha value for font, background quad and border. Splited quad and border into own commands.
* Added a triangle function to backends and genericrenderer, also added the functions to set an alpha value for geometric figures.
author | helios2000@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sat, 07 Aug 2010 16:36:35 +0000 |
parents | b2feacaed53c |
children | 853d25234671 |
comparison
equal
deleted
inserted
replaced
582:5e04f6349894 | 583:47b49b9b0c0a |
---|---|
181 | 181 |
182 void RenderBackendOpenGL::isClearNeeded(bool clear) { | 182 void RenderBackendOpenGL::isClearNeeded(bool clear) { |
183 m_clear = clear; | 183 m_clear = clear; |
184 } | 184 } |
185 | 185 |
186 bool RenderBackendOpenGL::putPixel(int x, int y, int r, int g, int b) { | 186 bool RenderBackendOpenGL::putPixel(int x, int y, int r, int g, int b, int a) { |
187 if ((x < 0) || (x >= (int)getWidth()) || (y < 0) || (y >= (int)getHeight())) { | 187 if ((x < 0) || (x >= (int)getWidth()) || (y < 0) || (y >= (int)getHeight())) { |
188 return false; | 188 return false; |
189 } | 189 } |
190 glColor3ub(r, g, b); | 190 |
191 glColor4ub(r, g, b, a); | |
192 | |
191 glBegin(GL_POINTS); | 193 glBegin(GL_POINTS); |
192 glVertex2i(x, y); | 194 glVertex2i(x, y); |
193 glEnd(); | 195 glEnd(); |
194 return true; | 196 return true; |
195 } | 197 } |
196 | 198 |
197 void RenderBackendOpenGL::drawLine(const Point& p1, const Point& p2, int r, int g, int b) { | 199 void RenderBackendOpenGL::drawLine(const Point& p1, const Point& p2, int r, int g, int b, int a) { |
198 glColor3ub(r, g, b); | 200 glColor4ub(r, g, b, a); |
201 | |
199 glBegin(GL_LINES); | 202 glBegin(GL_LINES); |
200 glVertex2f(p1.x+0.5f, p1.y+0.5f); | 203 glVertex2f(p1.x+0.5f, p1.y+0.5f); |
201 glVertex2f(p2.x+0.5f, p2.y+0.5f); | 204 glVertex2f(p2.x+0.5f, p2.y+0.5f); |
202 glEnd(); | 205 glEnd(); |
203 | 206 |
204 glBegin(GL_POINTS); | 207 glBegin(GL_POINTS); |
205 glVertex2f(p2.x+0.5f, p2.y+0.5f); | 208 glVertex2f(p2.x+0.5f, p2.y+0.5f); |
206 glEnd(); | 209 glEnd(); |
207 } | 210 } |
208 | 211 |
209 void RenderBackendOpenGL::drawQuad(const Point& p1, const Point& p2, const Point& p3, const Point& p4, int r, int g, int b) { | 212 void RenderBackendOpenGL::drawTriangle(const Point& p1, const Point& p2, const Point& p3, int r, int g, int b, int a) { |
210 glColor4ub(r, g, b, 165); | 213 glColor4ub(r, g, b, a); |
214 | |
215 glBegin(GL_TRIANGLES); | |
216 glVertex2f(p1.x, p1.y); | |
217 glVertex2f(p2.x, p2.y); | |
218 glVertex2f(p3.x, p3.y); | |
219 glEnd(); | |
220 } | |
221 | |
222 void RenderBackendOpenGL::drawQuad(const Point& p1, const Point& p2, const Point& p3, const Point& p4, int r, int g, int b, int a) { | |
223 glColor4ub(r, g, b, a); | |
224 | |
211 glBegin(GL_QUADS); | 225 glBegin(GL_QUADS); |
212 glVertex2f(p1.x, p1.y); | 226 glVertex2f(p1.x, p1.y); |
213 glVertex2f(p2.x, p2.y); | 227 glVertex2f(p2.x, p2.y); |
214 glVertex2f(p3.x, p3.y); | 228 glVertex2f(p3.x, p3.y); |
215 glVertex2f(p4.x, p4.y); | 229 glVertex2f(p4.x, p4.y); |
216 glEnd(); | 230 glEnd(); |
217 } | 231 } |
218 | 232 |
219 void RenderBackendOpenGL::drawVertex(const Point& p, const uint8_t size, int r, int g, int b){ | 233 void RenderBackendOpenGL::drawVertex(const Point& p, const uint8_t size, int r, int g, int b, int a){ |
220 GLfloat width; | 234 GLfloat width; |
221 glGetFloatv(GL_LINE_WIDTH, &width); | 235 glGetFloatv(GL_LINE_WIDTH, &width); |
222 glLineWidth(1.0); | 236 glLineWidth(1.0); |
223 | 237 |
224 glColor3ub(r, g, b); | 238 glColor4ub(r, g, b, a); |
239 | |
225 glBegin(GL_LINE_LOOP); | 240 glBegin(GL_LINE_LOOP); |
226 glVertex2f(p.x-size, p.y+size); | 241 glVertex2f(p.x-size, p.y+size); |
227 glVertex2f(p.x+size, p.y+size); | 242 glVertex2f(p.x+size, p.y+size); |
228 glVertex2f(p.x+size, p.y-size); | 243 glVertex2f(p.x+size, p.y-size); |
229 glVertex2f(p.x-size, p.y-size); | 244 glVertex2f(p.x-size, p.y-size); |