2003/09/13 05:08:58
[org.ibex.core.git] / src / org / xwt / plat / OpenGL.cc
index e307b45..9d2a3f1 100644 (file)
@@ -177,11 +177,12 @@ void OpenGL$RectGLPicture::natInit(JArray<jint> *data_) {
 }
 
 void OpenGL$RectGLPicture::draw(jint dx1, jint dy1, jint dx2, jint dy2,jint sx1, jint sy1, jint sx2, jint sy2) { 
-    glColor4f(1.0f,1.0f,1.0f,1.0f);
-    glEnable(GL_TEXTURE_RECTANGLE_EXT);
-    glBindTexture(GL_TEXTURE_RECTANGLE_EXT, textureName);    
-    glBegin(GL_QUADS); 
-        glTexCoord2i (sx1, sy1   );
+    if (hasRectangularTextures()) {
+       glColor4f(1.0f,1.0f,1.0f,1.0f);
+       glEnable(GL_TEXTURE_RECTANGLE_EXT);
+       glBindTexture(GL_TEXTURE_RECTANGLE_EXT, textureName);    
+       glBegin(GL_QUADS); 
+       glTexCoord2i (sx1, sy1   );
         glVertex3i   (dx1, dy1, 0);   
         glTexCoord2i (sx2, sy1   ); 
         glVertex3i   (dx2, dy1, 0);
@@ -189,10 +190,33 @@ void OpenGL$RectGLPicture::draw(jint dx1, jint dy1, jint dx2, jint dy2,jint sx1,
         glVertex3i   (dx2, dy2, 0);
         glTexCoord2i (sx1, sy2   );
         glVertex3i   (dx1, dy2, 0);
-    glEnd();
-    glDisable(GL_TEXTURE_RECTANGLE_EXT);
-    checkGLError();
+       glEnd();
+       glDisable(GL_TEXTURE_RECTANGLE_EXT);
+       checkGLError();
+    } else {
+        float tx1,ty1,tx2,ty2; // normalized texture coords
+        tx1 = (float) sx1 / (float) width;
+        ty1 = (float) sy1 / (float) height;
+        tx2 = (float) sx2 / (float) width;
+        ty2 = (float) sy2 / (float) height;
 
+        glColor4f(1.0f,1.0f,1.0f,1.0f);
+        glEnable(GL_TEXTURE_2D);
+        glBindTexture(GL_TEXTURE_2D, textureName);    
+        checkGLError();
+        glBegin(GL_QUADS); 
+            glTexCoord2f (tx1, ty1   );
+            glVertex3i   (dx1, dy1, 0);
+            glTexCoord2f (tx2, ty1   ); 
+            glVertex3i   (dx2, dy1, 0);
+            glTexCoord2f (tx2, ty2   ); 
+            glVertex3i   (dx2, dy2, 0);
+            glTexCoord2f (tx1, ty2   );
+            glVertex3i   (dx1, dy2, 0);
+        glEnd();
+        glDisable(GL_TEXTURE_2D);
+        checkGLError();
+    }
 }
 
 void OpenGL::natDeleteTexture(jint tex_) {