Text archives Help
- From: sparker@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r1082 - trunk/Engine/Display
- Date: Tue, 23 May 2006 16:23:41 -0600 (MDT)
Author: sparker
Date: Tue May 23 16:23:36 2006
New Revision: 1082
Modified:
trunk/Engine/Display/PureOpenGLDisplay.cc
trunk/Engine/Display/PureOpenGLDisplay.h
Log:
Make pbo stuff work on macbook (hackish)
Modified: trunk/Engine/Display/PureOpenGLDisplay.cc
==============================================================================
--- trunk/Engine/Display/PureOpenGLDisplay.cc (original)
+++ trunk/Engine/Display/PureOpenGLDisplay.cc Tue May 23 16:23:36 2006
@@ -70,8 +70,93 @@
#define GL_STORAGE_CACHED_APPLE 0x85BE
#define GL_STORAGE_SHARED_APPLE 0x85BF
// Unfortunately, this isn't defined
-#define glTextureRangeAPPLE(x, y, z)
+#ifdef GL_GLEXT_FUNCTION_POINTERS
+typedef void (* glTextureRangeAPPLEProcPtr) (GLenum target, GLsizei length,
const GLvoid *pointer);
+typedef void (* glGetTexParameterPointervAPPLEProcPtr) (GLenum target,
GLenum pname, GLvoid **params);
+#else
+extern "C" {
+extern void glTextureRangeAPPLE(GLenum target, GLsizei length, const GLvoid
*pointer);
+extern void glGetTexParameterPointervAPPLE(GLenum target, GLenum pname,
GLvoid **params);
+}
+#endif /* GL_GLEXT_FUNCTION_POINTERS */
+#endif
+
+#ifndef GL_ARB_pixel_buffer_object
+#define GL_ARB_pixel_buffer_object 1
+#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
+#endif
+
+#ifndef GL_ARB_vertex_buffer_object
+#ifdef GL_GLEXT_FUNCTION_POINTERS
+typedef void (* glBindBufferARBProcPtr) (GLenum target, GLuint buffer);
+typedef void (* glDeleteBuffersARBProcPtr) (GLsizei n, const GLuint
*buffers);
+typedef void (* glGenBuffersARBProcPtr) (GLsizei n, GLuint *buffers);
+typedef GLboolean (* glIsBufferARBProcPtr) (GLuint buffer);
+typedef void (* glBufferDataARBProcPtr) (GLenum target, GLsizeiptrARB size,
const GLvoid *data, GLenum usage);
+typedef void (* glBufferSubDataARBProcPtr) (GLenum target, GLintptrARB
offset, GLsizeiptrARB size, const GLvoid *data);
+typedef void (* glGetBufferSubDataARBProcPtr) (GLenum target, GLintptrARB
offset, GLsizeiptrARB size, GLvoid *data);
+typedef GLvoid *(* glMapBufferARBProcPtr) (GLenum target, GLenum access);
+typedef GLboolean (* glUnmapBufferARBProcPtr) (GLenum target);
+typedef void (* glGetBufferParameterivARBProcPtr) (GLenum target, GLenum
pname, GLint *params);
+typedef void (* glGetBufferPointervARBProcPtr) (GLenum target, GLenum pname,
GLvoid **params);
+#else
+extern "C" {
+extern void glBindBufferARB(GLenum target, GLuint buffer);
+extern void glDeleteBuffersARB(GLsizei n, const GLuint *buffers);
+extern void glGenBuffersARB(GLsizei n, GLuint *buffers);
+extern GLboolean glIsBufferARB(GLuint buffer);
+extern void glBufferDataARB(GLenum target, GLsizeiptrARB size, const GLvoid
*data, GLenum usage);
+extern void glBufferSubDataARB(GLenum target, GLintptrARB offset,
GLsizeiptrARB size, const GLvoid *data);
+extern void glGetBufferSubDataARB(GLenum target, GLintptrARB offset,
GLsizeiptrARB size, GLvoid *data);
+extern GLvoid *glMapBufferARB(GLenum target, GLenum access);
+extern GLboolean glUnmapBufferARB(GLenum target);
+extern void glGetBufferParameterivARB(GLenum target, GLenum pname, GLint
*params);
+extern void glGetBufferPointervARB(GLenum target, GLenum pname, GLvoid
**params);
+}
+#endif /* GL_GLEXT_FUNCTION_POINTERS */
+#endif
+
+#ifndef GL_ARB_vertex_buffer_object
+#define GL_ARB_vertex_buffer_object 1
+#define GL_ARRAY_BUFFER_ARB 0x8892
+#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
+#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
+#define GL_FOG_COORD_ARRAY_BUFFER_BINDING_ARB 0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
+#define GL_STREAM_DRAW_ARB 0x88E0
+#define GL_STREAM_READ_ARB 0x88E1
+#define GL_STREAM_COPY_ARB 0x88E2
+#define GL_STATIC_DRAW_ARB 0x88E4
+#define GL_STATIC_READ_ARB 0x88E5
+#define GL_STATIC_COPY_ARB 0x88E6
+#define GL_DYNAMIC_DRAW_ARB 0x88E8
+#define GL_DYNAMIC_READ_ARB 0x88E9
+#define GL_DYNAMIC_COPY_ARB 0x88EA
+#define GL_READ_ONLY_ARB 0x88B8
+#define GL_WRITE_ONLY_ARB 0x88B9
+#define GL_READ_WRITE_ARB 0x88BA
+#define GL_BUFFER_SIZE_ARB 0x8764
+#define GL_BUFFER_USAGE_ARB 0x8765
+#define GL_BUFFER_ACCESS_ARB 0x88BB
+#define GL_BUFFER_MAPPED_ARB 0x88BC
+#define GL_BUFFER_MAP_POINTER_ARB 0x88BD
+/* Obsolete */
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
#endif
+
+
#endif /* __APPLE__ */
// If these extensions are not availble, define these constants to something
so
@@ -333,7 +418,7 @@
}
glBindTexture(GL_TEXTURE_RECTANGLE_EXT, texids[0]);
- glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, xres*yres*4, data);
+ glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, xres*yres*4,
si->getRawData(0));
if(have_clientstorage)
glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE);
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
@@ -432,7 +517,7 @@
cerr << "Computing ids for current_pbo = "<<current_pbo<<"\n";
// Free old textures if necessary...
glGenTextures(1, &pbo->texId);
- glGenBuffers(1, &pbo->bufId);
+ glGenBuffersARB(1, &pbo->bufId);
pbo->need_ids = false;
}
@@ -452,7 +537,7 @@
// Map the memory. The contents are undefined, because of the
// previous call to glBufferData.
void* pboMemory = glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB,
- GL_WRITE_ONLY);
+ GL_WRITE_ONLY_ARB);
// Copy the data
memcpy(pboMemory, si->getRawData(0), pbo->texSize);
Modified: trunk/Engine/Display/PureOpenGLDisplay.h
==============================================================================
--- trunk/Engine/Display/PureOpenGLDisplay.h (original)
+++ trunk/Engine/Display/PureOpenGLDisplay.h Tue May 23 16:23:36 2006
@@ -32,6 +32,14 @@
#include <Core/Color/RGBColor.h>
#include <GL/gl.h>
+#include <GL/glext.h>
+
+#ifdef __APPLE__
+#ifndef GL_ARB_vertex_buffer_object
+typedef long GLintptrARB;
+typedef long GLsizeiptrARB;
+#endif
+#endif
#include <sgi_stl_warnings_off.h>
#include <string>
- [MANTA] r1082 - trunk/Engine/Display, sparker, 05/23/2006
Archive powered by MHonArc 2.6.16.