Re: [Flightgear-devel] OpenGL EXT Functions - native windows

2010-05-09 Thread Geoff McLane
Hi Erik, Fred,

Thank you Erik and Fred for pointing me to
 simgear/screen/extensions.[cxx|hxx]...

So it seems all the extensions _ARE_ supported in the
default windows DLLS (OpenGL32.dll and GLU32.dll),
just NOT exposed through the usual 'export' section,
thus the addresses must be 'found/loaded'...

If you know any pointers to more documentation on these
OpenGL extensions, specifically why this particular 'load'
method, that would be great...

Anyway, I wrapped the whole thing in a sg_ext_funcs class,
so that the address loading is done during instantiation,
rather than having to remember to do an 'init' first.

I have added this to Atlas's native WIN32 Map program, and
had some success - see -
 http://geoffair.org/fg/atlas-07.htm#framebuf

Although there are still some 'color' problems, these
images are a _BIG_ improvement to those above them, from
using render-in-window... and still a problem of the
Release build, which seems to optimize away something
very important...

Any ideas on these ongoing problems would be much
appreciated...

But many thanks again...

Regards,

Geoff.

--

___
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel


Re: [Flightgear-devel] OpenGL EXT Functions - native windows

2010-05-09 Thread Norman Vine

On May 9, 2010, at 2:20 PM, Geoff McLane wrote:

 Hi Erik, Fred,
 
 Thank you Erik and Fred for pointing me to
 simgear/screen/extensions.[cxx|hxx]...
 
 So it seems all the extensions _ARE_ supported in the
 default windows DLLS (OpenGL32.dll and GLU32.dll),
 just NOT exposed through the usual 'export' section,
 thus the addresses must be 'found/loaded'...
 
 If you know any pointers to more documentation on these
 OpenGL extensions, specifically why this particular 'load'
 method, that would be great...

The official documents are maintained at

http://www.opengl.org/registry/

HTH

Norman--

___
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel


Re: [Flightgear-devel] OpenGL EXT Functions - native windows

2010-05-03 Thread Erik Hofman

Geoff McLane wrote:

But do any native windows developers here know how to get
access to say glGenRenderbuffersEXT, glBindFramebufferEXT,
and some other GL extended functions, currently used in the
Atlas Map utility... exposed by the GL/glext.h header...


There still is support for it in SimGear, see simgear/screen/extensions.hxx

It works like this:
1. You need to add the extension support to extensions.hxx (see the
   attached diff for EXT_framebuffer_object support, this has been
   committed to CVS already by the way).

2. Define the function pointers like this:

   glGenRenderbuffersProc pglGenRenderbuffers;
   glBindFramebufferProc pglBindFramebuffer;
   bool framebuffer_object_support = false;

3. in the code test if the extension is supported:

   if (SGIsOpenGLExtensionSupported(GL_EXT_framebuffer_object))
   {
  pglGenRenderbuffers = SGGetGLProcAddress(glGenRenderbuffersEXT);
  pglBindFramebuffer = SGGetGLProcAddress(glBindFramebufferEXT);
  framebuffer_object_support = true;
   }

4. When using the function:

   if (framebuffer_object_support) {
  pglGenRenderbuffers(1, color_rb)
  // etc.
   }

Erik
Index: extensions.hxx
===
RCS file: /var/cvs/SimGear-0.3/source/simgear/screen/extensions.hxx,v
retrieving revision 1.35
diff -p -u -r1.35 extensions.hxx
--- extensions.hxx	23 Jan 2010 11:41:04 -	1.35
+++ extensions.hxx	3 May 2010 06:48:13 -
@@ -202,7 +202,7 @@ typedef void (APIENTRY * glClientActiveT
 #define GL_RGB_SCALE_ARB	0x8573
 #define GL_ADD_SIGNED_ARB	0x8574
 #define GL_INTERPOLATE_ARB	0x8575
-#define GL_SUBTRACT_ARB   0x84E7
+#define GL_SUBTRACT_ARB		0x84E7
 #define GL_CONSTANT_ARB		0x8576
 #define GL_PRIMARY_COLOR_ARB	0x8577
 #define GL_PREVIOUS_ARB		0x8578
@@ -767,6 +767,62 @@ typedef void (APIENTRY * glGetVertexAttr
 typedef GLboolean (APIENTRY * glIsProgramProc) (GLuint program);
 
 /*
+ * EXT_framebuffer_objects
+ */
+#ifndef GL_EXT_framebuffer_object
+#define GL_EXT_framebuffer_object 1
+#define GL_NONE_EXT		0
+#define GL_FRAMEBUFFER_EXT	0x8D40
+#define GL_RENDERBUFFER_EXT	0x8D41
+#define GL_RGBA4_EXT		0x8056
+#define GL_RGB5_A1_EXT		0x8057
+#define GL_RGB565_EXT		0x8D62
+#define GL_DEPTH_COMPONENT16_EXT0x81A5
+#define GL_RENDERBUFFER_WIDTH_EXT0x8D42
+#define GL_RENDERBUFFER_HEIGHT_EXT0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT			0x8D44
+#define GL_RENDERBUFFER_RED_SIZE_EXT0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE_EXT0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE_EXT0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE_EXT0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE_EXT0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE_EXT			0x8D55
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT		0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT		0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT		0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT	0x8CD3
+#define GL_COLOR_ATTACHMENT0_EXT0x8CE0
+#define GL_DEPTH_ATTACHMENT_EXT	0x8D00
+#define GL_STENCIL_ATTACHMENT_EXT0x8D20
+#define GL_FRAMEBUFFER_COMPLETE_EXT0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT		0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT	0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT		0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT			0x8CDA
+#define GL_FRAMEBUFFER_UNSUPPORTED_EXT0x8CDD
+#define GL_FRAMEBUFFER_BINDING_EXT0x8CA6
+#define GL_RENDERBUFFER_BINDING_EXT0x8CA7
+#define GL_MAX_RENDERBUFFER_SIZE_EXT0x84E8
+#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT			0x0506
+#endif
+
+typedef GLboolean (APIENTRY * glIsRenderbufferProc) (GLuint renderbuffer);
+typedef void (APIENTRY * glBindRenderbufferProc) (GLenum target, GLuint renderbuffer);
+typedef void (APIENTRY * glDeleteRenderbuffersProc) (GLsizei n, const GLuint* renderbuffers);
+typedef void (APIENTRY * glGenRenderbuffersProc) (GLsizei n, GLuint* renderbuffers);
+typedef void (APIENTRY * glRenderbufferStorageProc) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRY * glGetRenderbufferParameterivProc) (GLenum target, GLenum pname, GLint* params);
+typedef GLboolean (APIENTRY * glIsFramebufferProc) (GLuint framebuffer);
+typedef void (APIENTRY * glBindFramebufferProc) (GLenum target, GLuint framebuffer);
+typedef void (APIENTRY * glDeleteFramebuffersProc) (GLsizei n, const GLuint* framebuffers);
+typedef void (APIENTRY * glGenFramebuffersProc) (GLsizei n, GLuint* framebuffers);
+typedef GLenum (APIENTRY * glCheckFramebufferStatusProc) (GLenum target);
+typedef void (APIENTRY * glFramebufferRenderbufferProc) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRY * glFramebufferTexture2DProc) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRY * 

Re: [Flightgear-devel] OpenGL EXT Functions - native windows

2010-05-03 Thread Frederic Bouvier

- Erik Hofman a écrit :

 3. in the code test if the extension is supported:
 
 if (SGIsOpenGLExtensionSupported(GL_EXT_framebuffer_object))
 {
pglGenRenderbuffers =
 SGGetGLProcAddress(glGenRenderbuffersEXT);
pglBindFramebuffer =
 SGGetGLProcAddress(glBindFramebufferEXT);
framebuffer_object_support = true;
 }

The portable way is to use SGLookupFunction. SGGetGLProcAddress is only 
available under Unix

-Fred

-- 
Frédéric Bouvier
http://my.fotolia.com/frfoto/  Photo gallery - album photo
http://www.youtube.com/user/fgfred64   Videos


--
___
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel


Re: [Flightgear-devel] OpenGL EXT Functions - native windows

2010-05-03 Thread Erik Hofman
Frederic Bouvier wrote:
   The portable way is to use SGLookupFunction. SGGetGLProcAddress is 
only available under Unix

True, I'm sorry for the mistake.

Erik


--
___
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel


Re: [Flightgear-devel] OpenGL EXT Functions - native windows

2010-05-03 Thread Arnt Karlsen
On Mon, 03 May 2010 11:44:12 +0200, Erik wrote in message 
4bde9aec.1040...@ehofman.com:

 Frederic Bouvier wrote:
  The portable way is to use SGLookupFunction.
  SGGetGLProcAddress is only available under Unix

..on GNU/Linux, which one is quicker or faster?

-- 
..med vennlig hilsen = with Kind Regards from Arnt... ;o)
...with a number of polar bear hunters in his ancestry...
  Scenarios always come in sets of three: 
  best case, worst case, and just in case.

--
___
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel


Re: [Flightgear-devel] OpenGL EXT Functions - native windows

2010-05-03 Thread Erik Hofman
Arnt Karlsen wrote:
 On Mon, 03 May 2010 11:44:12 +0200, Erik wrote in message 
 4bde9aec.1040...@ehofman.com:

   
 Frederic Bouvier wrote:
 
 The portable way is to use SGLookupFunction.
 SGGetGLProcAddress is only available under Unix
   

 ..on GNU/Linux, which one is quicker or faster?
   
There won't be much of a difference since SGLookupFunction is a pointer 
to either SGGetGLProcAdress or any other native implementation if it.

Erik

--
___
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel