43 #ifdef CHECK_MEMORY_LEAKS
45 #endif // CHECK_MEMORY_LEAKS
54 Polygon(id, type, color, shape, fill, layer, angle, imgFile),
69 FXString t(
myType.c_str());
71 new FXMenuSeparator(ret);
101 const GLubyte* estring;
103 estring = gluErrorString(errorCode);
104 fprintf(stderr,
"Tessellation Error: %s\n", estring);
113 glVertex3dv((GLdouble*) vertex);
117 GLdouble* vertex_data[4],
118 GLfloat weight[4], GLdouble** dataOut) {
123 vertex = (GLdouble*) malloc(7 *
sizeof(GLdouble));
125 vertex[0] = coords[0];
126 vertex[1] = coords[1];
127 vertex[2] = coords[2];
167 if (textureID >= 0) {
168 glEnable(GL_TEXTURE_2D);
169 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
170 glDisable(GL_CULL_FACE);
171 glDisable(GL_DEPTH_TEST);
172 glDisable(GL_LIGHTING);
173 glDisable(GL_COLOR_MATERIAL);
174 glDisable(GL_ALPHA_TEST);
176 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
177 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
178 glBindTexture(GL_TEXTURE_2D, textureID);
179 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
180 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
182 glEnable(GL_TEXTURE_GEN_S);
183 glEnable(GL_TEXTURE_GEN_T);
184 glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
185 glTexGenfv(GL_S, GL_OBJECT_PLANE,
xPlane);
186 glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
187 glTexGenfv(GL_T, GL_OBJECT_PLANE,
yPlane);
192 if (textureID >= 0) {
193 glEnable(GL_DEPTH_TEST);
194 glBindTexture(GL_TEXTURE_2D, 0);
195 glDisable(GL_TEXTURE_2D);
196 glDisable(GL_TEXTURE_GEN_S);
197 glDisable(GL_TEXTURE_GEN_T);
207 Polygon::setShape(shape);
219 throw ProcessError(
"GUIPolygon::storeTesselation() could not create display list");
225 GLUtesselator* tobj = gluNewTess();
226 gluTessCallback(tobj, GLU_TESS_VERTEX, (GLvoid(APIENTRY*)()) &glVertex3dv);
227 gluTessCallback(tobj, GLU_TESS_BEGIN, (GLvoid(APIENTRY*)()) &
beginCallback);
228 gluTessCallback(tobj, GLU_TESS_END, (GLvoid(APIENTRY*)()) &
endCallback);
230 gluTessCallback(tobj, GLU_TESS_COMBINE, (GLvoid(APIENTRY*)()) &
combineCallback);
231 gluTessProperty(tobj, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ODD);
232 gluTessBeginPolygon(tobj, NULL);
233 gluTessBeginContour(tobj);
237 points[3 * i + 2] = 0;
238 gluTessVertex(tobj, points + 3 * i, points + 3 * i);
240 gluTessEndContour(tobj);
242 gluTessEndPolygon(tobj);