[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-smalltalk] Build gst without GL
From: |
Paolo Bonzini |
Subject: |
Re: [Help-smalltalk] Build gst without GL |
Date: |
Wed, 18 Feb 2009 16:13:39 +0100 |
User-agent: |
Thunderbird 2.0.0.19 (Macintosh/20081209) |
Gwenael Casaccio wrote:
> On Wednesday 18 February 2009 15:56:10 you wrote:
>> Gwenael Casaccio wrote:
>>> Hi,
>>>
>>> Is it possible to build gst without opengl ? I've tried to build with
>>> ./configure --without-opengl option but it has no effect...
>> What's the problem? (and the platform?)
>>
>> Paolo
>
> gstGl.c: In function 'gst_opengl_glMultTransposeMatrixv':
>
>
> gstGl.c:220: warning: implicit declaration of function
> 'glMultTransposeMatrixf'
>
> gstGl.c: In function 'gst_opengl_glLoadTransposeMatrixv':
>
>
> gstGl.c:326: warning: implicit declaration of function
> 'glLoadTransposeMatrixf'
>
> gstGl.c: In function 'gst_initModule_gl':
>
>
> gstGl.c:1070: error: 'glActiveTexture' undeclared (first use in this
> function)
>
> gstGl.c:1070: error: (Each undeclared identifier is reported only once
>
>
> gstGl.c:1070: error: for each function it appears in.)
>
>
> gstGl.c:1076: error: 'glBlendEquation' undeclared (first use in this
> function)
>
> gstGl.c:1087: error: 'glClientActiveTexture' undeclared (first use in this
> function)
>
> I've the gl headers (that's the nvidia headers on kubuntu)...
You can apply this patch (taken from git). It is curiously enough
exactly the same errors that I had on Windows a few weeeks ago.
Paolo
diff --git a/packages/opengl/ChangeLog b/packages/opengl/ChangeLog
index 6bfc5da..dc33a4b 100644
--- a/packages/opengl/ChangeLog
+++ b/packages/opengl/ChangeLog
@@ -1,3 +1,20 @@
+2009-01-25 Paolo Bonzini <address@hidden>
+
+ * OpenGL.st: Temporarily disable extensions not in Win32.
+ * gstGl.c: Temporarily disable extensions not in Win32.
+ * gstGlu.c: Temporarily disable functions not in Win32.
+ * gstGluNurbs.c: Disable if not available.
+
+2009-01-25 Paolo Bonzini <address@hidden>
+
+ * gstGl.c: Fixes for missing GL_ARB_transpose_matrix,
+ GL_EXT_blend_minmax, GL_EXT_blend_color.
+ * gstGlu.c: Reimplement gluCheckExtension.
+
+2009-01-25 Paolo Bonzini <address@hidden>
+
+ * gstGluTess.c: Fix typo.
+
2008-08-27 Olivier Blanc <address@hidden>
* test/trim.st: New.
diff --git a/packages/opengl/OpenGL.st b/packages/opengl/OpenGL.st
index 46bf616..028478a 100644
--- a/packages/opengl/OpenGL.st
+++ b/packages/opengl/OpenGL.st
@@ -416,30 +416,6 @@ See OpenGL programming guide for more informations.'>
]
- loadTransposeMatrixf: aMatrix [
- <category: 'Matrix manipulation'>
- <cCall: 'glLoadTransposeMatrixf' retuning: #void args: #(#cObject)>
-
- ]
-
- multTransposeMatrixf: aMatrix [
- <category: 'Matrix manipulation'>
- <cCall: 'glMultTransposeMatrixf' retuning: #void args: #(#cObject)>
-
- ]
-
- loadTransposeMatrixd: aMatrix [
- <category: 'Matrix manipulation'>
- <cCall: 'glLoadTransposeMatrixd' retuning: #void args: #(#cObject)>
-
- ]
-
- multTransposeMatrixd: aMatrix [
- <category: 'Matrix manipulation'>
- <cCall: 'glMultTransposeMatrixd' retuning: #void args: #(#cObject)>
-
- ]
-
loadMatrix: aMatrix [
<category: 'Matrix manipulation'>
<cCall: 'glLoadMatrixv' retuning: #void args: #(#smalltalk)>
diff --git a/packages/opengl/gstGl.c b/packages/opengl/gstGl.c
index 0bcb863..deecfdb 100644
--- a/packages/opengl/gstGl.c
+++ b/packages/opengl/gstGl.c
@@ -217,7 +217,19 @@ gst_opengl_glMultTransposeMatrixv (OOP matrixOOP)
if (!p)
return GL_INVALID_VALUE;
+#ifdef GL_ARB_transpose_matrix
glMultTransposeMatrixf (p);
+#else
+ {
+ GLfloat mt[16];
+ mt[0] = p[0]; mt[1] = p[4]; mt[2] = p[8]; mt[3] = p[12];
+ mt[4] = p[1]; mt[5] = p[5]; mt[6] = p[9]; mt[7] = p[13];
+ mt[8] = p[2]; mt[9] = p[6]; mt[10] = p[10]; mt[11] = p[14];
+ mt[12] = p[3]; mt[13] = p[7]; mt[14] = p[11]; mt[15] = p[15];
+ glMultMatrixf (mt);
+ }
+#endif
+
return 0;
}
@@ -323,7 +335,18 @@ gst_opengl_glLoadTransposeMatrixv (OOP matrixOOP)
if (!p)
return GL_INVALID_VALUE;
+#ifdef GL_ARB_transpose_matrix
glLoadTransposeMatrixf (p);
+#else
+ {
+ GLfloat mt[16];
+ mt[0] = p[0]; mt[1] = p[4]; mt[2] = p[8]; mt[3] = p[12];
+ mt[4] = p[1]; mt[5] = p[5]; mt[6] = p[9]; mt[7] = p[13];
+ mt[8] = p[2]; mt[9] = p[6]; mt[10] = p[10]; mt[11] = p[14];
+ mt[12] = p[3]; mt[13] = p[7]; mt[14] = p[11]; mt[15] = p[15];
+ glLoadMatrixf (mt);
+ }
+#endif
return 0;
}
@@ -700,7 +723,9 @@ gst_opengl_glGetv_size (GLenum pname)
case GL_AUX_BUFFERS:
case GL_BLEND:
case GL_BLEND_DST:
+#if GL_EXT_blend_minmax
case GL_BLEND_EQUATION_EXT:
+#endif
case GL_BLEND_SRC:
case GL_BLUE_BIAS:
case GL_BLUE_BITS:
@@ -869,7 +894,9 @@ gst_opengl_glGetv_size (GLenum pname)
return 3;
case GL_ACCUM_CLEAR_VALUE:
+#if GL_EXT_blend_color
case GL_BLEND_COLOR_EXT:
+#endif
case GL_COLOR_CLEAR_VALUE:
case GL_COLOR_WRITEMASK:
case GL_CURRENT_COLOR:
@@ -1067,13 +1094,17 @@ gst_opengl_glCallLists( GLsizei first, GLsizei last,
OOP listsOOP )
void gst_initModule_gl()
{
vm_proxy->defineCFunc ("glAccum", glAccum);
+#if 0
vm_proxy->defineCFunc ("glActiveTexture", glActiveTexture);
+#endif
vm_proxy->defineCFunc ("glAlphaFunc", glAlphaFunc);
vm_proxy->defineCFunc ("glArrayElement", glArrayElement);
vm_proxy->defineCFunc ("glBegin", glBegin);
vm_proxy->defineCFunc ("glBindTexture", glBindTexture);
vm_proxy->defineCFunc ("glBitmap", gst_opengl_glBitmap);
+#if 0
vm_proxy->defineCFunc ("glBlendEquation", glBlendEquation);
+#endif
vm_proxy->defineCFunc ("glBlendFunc", glBlendFunc);
vm_proxy->defineCFunc ("glCallList", glCallList);
vm_proxy->defineCFunc ("glCallLists", gst_opengl_glCallLists);
@@ -1084,7 +1115,9 @@ void gst_initModule_gl()
vm_proxy->defineCFunc ("glClearDepth", glClearDepth);
vm_proxy->defineCFunc ("glClearIndex", glClearIndex);
vm_proxy->defineCFunc ("glClearStencil", glClearStencil);
+#if 0
vm_proxy->defineCFunc ("glClientActiveTexture", glClientActiveTexture);
+#endif
vm_proxy->defineCFunc ("glClipPlane", glClipPlane);
vm_proxy->defineCFunc ("glColor3b", glColor3b);
vm_proxy->defineCFunc ("glColor3bv", glColor3bv);
@@ -1113,12 +1146,14 @@ void gst_initModule_gl()
vm_proxy->defineCFunc ("glColorv", gst_opengl_glColorv);
vm_proxy->defineCFunc ("glColorMask", glColorMask);
vm_proxy->defineCFunc ("glColorMaterial", glColorMaterial);
+#if 0
vm_proxy->defineCFunc ("glCompressedTexImage1D", glCompressedTexImage1D);
vm_proxy->defineCFunc ("glCompressedTexImage2D", glCompressedTexImage2D);
vm_proxy->defineCFunc ("glCompressedTexImage3D", glCompressedTexImage3D);
vm_proxy->defineCFunc ("glCompressedTexSubImage1D",
glCompressedTexSubImage1D);
vm_proxy->defineCFunc ("glCompressedTexSubImage2D",
glCompressedTexSubImage2D);
vm_proxy->defineCFunc ("glCompressedTexSubImage3D",
glCompressedTexSubImage3D);
+#endif
vm_proxy->defineCFunc ("glCullFace", glCullFace);
vm_proxy->defineCFunc ("glDeleteLists", glDeleteLists);
vm_proxy->defineCFunc ("glDeleteTextures", gst_opengl_glDeleteTextures);
@@ -1162,7 +1197,9 @@ void gst_initModule_gl()
vm_proxy->defineCFunc ("glGenTextures", gst_opengl_glGenTextures);
// vm_proxy->defineCFunc ("glGetBooleanv", glGetBooleanv);
vm_proxy->defineCFunc ("glGetClipPlane", glGetClipPlane);
+#if 0
vm_proxy->defineCFunc ("glGetCompressedTexImage", glGetCompressedTexImage);
+#endif
vm_proxy->defineCFunc ("glGetDoublev", gst_opengl_glGetDoublev);
vm_proxy->defineCFunc ("glGetError", glGetError);
vm_proxy->defineCFunc ("glGetFloatv", gst_opengl_glGetFloatv);
@@ -1223,8 +1260,10 @@ void gst_initModule_gl()
vm_proxy->defineCFunc ("glLoadMatrixf", glLoadMatrixf);
vm_proxy->defineCFunc ("glLoadMatrixv", gst_opengl_glLoadMatrixv);
vm_proxy->defineCFunc ("glLoadName", glLoadName);
+#if 0
vm_proxy->defineCFunc ("glLoadTransposeMatrixd", glLoadTransposeMatrixd);
vm_proxy->defineCFunc ("glLoadTransposeMatrixf", glLoadTransposeMatrixf);
+#endif
vm_proxy->defineCFunc ("glLoadTransposeMatrixv",
gst_opengl_glLoadTransposeMatrixv);
vm_proxy->defineCFunc ("glLogicOp", glLogicOp);
vm_proxy->defineCFunc ("glMapGrid1d", glMapGrid1d);
@@ -1240,9 +1279,12 @@ void gst_initModule_gl()
vm_proxy->defineCFunc ("glMultMatrixd", glMultMatrixd);
vm_proxy->defineCFunc ("glMultMatrixf", glMultMatrixf);
vm_proxy->defineCFunc ("glMultMatrixv", gst_opengl_glMultMatrixv);
+#if 0
vm_proxy->defineCFunc ("glMultTransposeMatrixd", glMultTransposeMatrixd);
vm_proxy->defineCFunc ("glMultTransposeMatrixf", glMultTransposeMatrixf);
+#endif
vm_proxy->defineCFunc ("glMultTransposeMatrixv",
gst_opengl_glMultTransposeMatrixv);
+#if 0
vm_proxy->defineCFunc ("glMultiTexCoord1d", glMultiTexCoord1d);
vm_proxy->defineCFunc ("glMultiTexCoord1dv", glMultiTexCoord1dv);
vm_proxy->defineCFunc ("glMultiTexCoord1f", glMultiTexCoord1f);
@@ -1275,6 +1317,7 @@ void gst_initModule_gl()
vm_proxy->defineCFunc ("glMultiTexCoord4iv", glMultiTexCoord4iv);
vm_proxy->defineCFunc ("glMultiTexCoord4s", glMultiTexCoord4s);
vm_proxy->defineCFunc ("glMultiTexCoord4sv", glMultiTexCoord4sv);
+#endif
vm_proxy->defineCFunc ("glNewList", glNewList);
vm_proxy->defineCFunc ("glNormal3b", glNormal3b);
vm_proxy->defineCFunc ("glNormal3bv", glNormal3bv);
@@ -1341,12 +1384,16 @@ void gst_initModule_gl()
vm_proxy->defineCFunc ("glRects", glRects);
vm_proxy->defineCFunc ("glRectsv", glRectsv);
vm_proxy->defineCFunc ("glRenderMode", glRenderMode);
+#if 0
vm_proxy->defineCFunc ("glResetHistogram", glResetHistogram);
vm_proxy->defineCFunc ("glResetMinmax", glResetMinmax);
+#endif
vm_proxy->defineCFunc ("glRotatev", gst_opengl_glRotatev);
vm_proxy->defineCFunc ("glRotated", glRotated);
vm_proxy->defineCFunc ("glRotatef", glRotatef);
+#if 0
vm_proxy->defineCFunc ("glSampleCoverage", glSampleCoverage);
+#endif
vm_proxy->defineCFunc ("glScalev", gst_opengl_glScalev);
vm_proxy->defineCFunc ("glScaled", glScaled);
vm_proxy->defineCFunc ("glScalef", glScalef);
diff --git a/packages/opengl/gstGlu.c b/packages/opengl/gstGlu.c
index 55e5082..52f55a9 100644
--- a/packages/opengl/gstGlu.c
+++ b/packages/opengl/gstGlu.c
@@ -221,6 +221,24 @@ void gst_opengl_gluPartialDisk (GLenum draw, GLenum
normals, GLenum orient,
gluDeleteQuadric (q);
}
+/* Not provided on MinGW, but easy enough to provide. */
+GLboolean
+glu_check_extension(const char *extName, const char * extString)
+{
+ const int len = strlen (extName);
+ const char *c;
+
+ while (extString && (c = strstr (extString, extName)) != NULL)
+ {
+ if ((c == extString || c[-1] == ' ') && (c[len] == ' ' || c[len] == 0))
+ return GL_TRUE;
+
+ extString = strchr (c + len, ' ');
+ }
+
+ return GL_FALSE;
+}
+
/* Init module */
void gst_initModule_glu() {
@@ -229,13 +247,17 @@ void gst_initModule_glu() {
vm_proxy->defineCFunc ("gluBeginPolygon", gluBeginPolygon) ;
vm_proxy->defineCFunc ("gluBeginSurface", gluBeginSurface) ;
vm_proxy->defineCFunc ("gluBeginTrim", gluBeginTrim) ;
+#if 0
vm_proxy->defineCFunc ("gluBuild1DMipmapLevels", gluBuild1DMipmapLevels) ;
- vm_proxy->defineCFunc ("gluBuild1DMipmaps", gluBuild1DMipmaps) ;
vm_proxy->defineCFunc ("gluBuild2DMipmapLevels", gluBuild2DMipmapLevels) ;
- vm_proxy->defineCFunc ("gluBuild2DMipmaps", gluBuild2DMipmaps) ;
vm_proxy->defineCFunc ("gluBuild3DMipmapLevels", gluBuild3DMipmapLevels) ;
+#endif
+ vm_proxy->defineCFunc ("gluBuild1DMipmaps", gluBuild1DMipmaps) ;
+ vm_proxy->defineCFunc ("gluBuild2DMipmaps", gluBuild2DMipmaps) ;
+#if 0
vm_proxy->defineCFunc ("gluBuild3DMipmaps", gluBuild3DMipmaps) ;
- vm_proxy->defineCFunc ("gluCheckExtension", gluCheckExtension) ;
+#endif
+ vm_proxy->defineCFunc ("gluCheckExtension", glu_check_extension) ;
vm_proxy->defineCFunc ("gluCylinder", gst_opengl_gluCylinder) ;
vm_proxy->defineCFunc ("gluDeleteTess", gluDeleteTess) ;
vm_proxy->defineCFunc ("gluDisk", gst_opengl_gluDisk) ;
diff --git a/packages/opengl/gstGluNurbs.c b/packages/opengl/gstGluNurbs.c
index cf521fe..36a38e4 100644
--- a/packages/opengl/gstGluNurbs.c
+++ b/packages/opengl/gstGluNurbs.c
@@ -55,6 +55,7 @@
#include <stdlib.h>
#include <string.h>
+#ifdef GLU_NURBS_BEGIN
#define nil vm_proxy->nilOOP
@@ -290,3 +291,11 @@ void gst_initModule_gluNurbs() {
vm_proxy->defineCFunc ("gluNurbsConnectSignal",
gst_opengl_gluNurbsConnectSignal);
}
+
+#else
+
+/* Init module */
+void gst_initModule_gluNurbs() {
+}
+
+#endif
diff --git a/packages/opengl/gstGluTess.c b/packages/opengl/gstGluTess.c
index 3aecc6e..ab76c0a 100644
--- a/packages/opengl/gstGluTess.c
+++ b/packages/opengl/gstGluTess.c
@@ -107,7 +107,7 @@ gst_glu_tessCallback_Tess_EdgeFlag_Data ( GLenum edge,
void* data )
static void
gst_glu_tessCallback_Tess_End_Data (void* data )
{
- gst_glu_tessCallback_sendMessageTo((OOP)data, GLU_NURBS_END, NULL, 0);
+ gst_glu_tessCallback_sendMessageTo((OOP)data, GLU_TESS_END, NULL, 0);
}
static void
@@ -159,7 +159,7 @@ static struct gst_glu_callback gst_glu_tessCallbackFuncs[]
= {
(GLUfuncptr) gst_glu_tessCallback_Tess_EdgeFlag_Data },
{ GLU_TESS_COMBINE, GLU_TESS_COMBINE_DATA,
(GLUfuncptr) gst_glu_tessCallback_Tess_Combine_Data },
- { GLU_NURBS_END, GLU_NURBS_END_DATA,
+ { GLU_TESS_END, GLU_TESS_END_DATA,
(GLUfuncptr) gst_glu_tessCallback_Tess_End_Data }
};