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);