32bit OpenGL delivered with 64bit PB

Just starting out? Need help? Post your questions and find answers here.
IdeasVacuum
Always Here
Always Here
Posts: 6425
Joined: Fri Oct 23, 2009 2:33 am
Location: Wales, UK
Contact:

32bit OpenGL delivered with 64bit PB

Post by IdeasVacuum »

Re: viewtopic.php?f=36&t=74033

It looks like PB 5.71 LTS 64bit is delivered with the 32bit version of OpenGL?
IdeasVacuum
If it sounds simple, you have not grasped the complexity.
Fred
Administrator
Administrator
Posts: 16681
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: 32bit OpenGL delivered with 64bit PB

Post by Fred »

No, it ships the correct version (or your couldn't link at all). t was the code which was wrong, if you don't type your array to .l, it will use .i which is 64-bit type on x64 compiler, but the OpenGL API still excpect a 32-bit array even in 64-bit.
IdeasVacuum
Always Here
Always Here
Posts: 6425
Joined: Fri Oct 23, 2009 2:33 am
Location: Wales, UK
Contact:

Re: 32bit OpenGL delivered with 64bit PB

Post by IdeasVacuum »

Thanks Fred - there is so much OpenGL information around which is wrong, or out of date.

Would it be possible for you to add the more modern OpenGL functions to PB?

Code: Select all

Import "Opengl32.lib"
 wglGetProcAddress_(s.p-ascii) As "wglGetProcAddress"
EndImport

Prototype PFNGLGENBUFFERSPROC ( n.i, *buffers)
Global glGenBuffers.PFNGLGENBUFFERSPROC
glGenBuffers = wglGetProcAddress_( "glGenBuffers" )

Prototype PFNGLBINDBUFFERPROC ( target.l, buffer.i)
Global glBindBuffer.PFNGLBINDBUFFERPROC
glBindBuffer = wglGetProcAddress_( "glBindBuffer" )

Prototype PFNGLBUFFERDATAPROC ( target.l, size.i, *Data_, usage.l)
Global glBufferData.PFNGLBUFFERDATAPROC
glBufferData = wglGetProcAddress_( "glBufferData" )

Prototype PFNGLBUFFERSUBDATAPROC ( target.l, offset.i, size.i, *Data_)
Global glBufferSubData.PFNGLBUFFERSUBDATAPROC
glBufferSubData = wglGetProcAddress_( "glBufferSubData" )

Prototype PFNGLGENVERTEXARRAYSPROC (n.i, *arrays)
Global glGenVertexArrays.PFNGLGENVERTEXARRAYSPROC
glGenVertexArrays = wglGetProcAddress_( "glGenVertexArrays" )

Prototype PFNGLBINDVERTEXARRAYPROC(n.i)
Global glBindVertexArray.PFNGLBINDVERTEXARRAYPROC
glBindVertexArray = wglGetProcAddress_( "glBindVertexArray" )

Prototype PFNGLENABLEVERTEXATTRIBARRAYPROC ( index.i )
Global glEnableVertexAttribArray.PFNGLENABLEVERTEXATTRIBARRAYPROC
glEnableVertexAttribArray = wglGetProcAddress_( "glEnableVertexAttribArray" )

Prototype PFNGLVERTEXATTRIBPOINTERPROC ( index.i, size.i, type.l, normalized.b, stride.i, *pointer )
Global glVertexAttribPointer.PFNGLVERTEXATTRIBPOINTERPROC
glVertexAttribPointer = wglGetProcAddress_( "glVertexAttribPointer" )

Prototype.i PFNGLCREATESHADERPROC ( type.l )
Global glCreateShader.PFNGLCREATESHADERPROC
glCreateShader = wglGetProcAddress_( "glCreateShader" )

Prototype PFNGLSHADERSOURCEPROC ( shader.i, count.i, *stringBuffer, *length )
Global glShaderSource.PFNGLSHADERSOURCEPROC
glShaderSource = wglGetProcAddress_( "glShaderSource" )

Prototype PFNGLCOMPILESHADERPROC ( shader.i )
Global glCompileShader.PFNGLCOMPILESHADERPROC
glCompileShader = wglGetProcAddress_( "glCompileShader" )

Prototype PFNGLATTACHSHADERPROC ( program.i, shader.i )
Global glAttachShader.PFNGLATTACHSHADERPROC
glAttachShader = wglGetProcAddress_( "glAttachShader" )

Prototype PFNGLLINKPROGRAMPROC ( program.i )
Global glLinkProgram.PFNGLLINKPROGRAMPROC
glLinkProgram = wglGetProcAddress_( "glLinkProgram" )

Prototype.i PFNGLCREATEPROGRAMPROC ( )
Global glCreateProgram.PFNGLCREATEPROGRAMPROC
glCreateProgram = wglGetProcAddress_( "glCreateProgram" )

Prototype PFNGLUSEPROGRAMPROC ( program.i )
Global glUseProgram.PFNGLUSEPROGRAMPROC
glUseProgram = wglGetProcAddress_( "glUseProgram" )

Prototype PFNGLDRAWARRAYSPROC ( mode.l, first.i, count.i )
Global glDrawArrays.PFNGLDRAWARRAYSPROC
glDrawArrays = wglGetProcAddress_( "glDrawArrays" )

;PFNGLINDEXPOINTERPROC) ( GLenum type, GLsizei stride, const GLvoid *ptr )

Prototype PFNGLINDEXPOINTERPROC ( enum.i, stride.i, *length )
Global glIndexPointer.PFNGLINDEXPOINTERPROC
glIndexPointer = wglGetProcAddress_( "glIndexPointer" )


Prototype PFNGLDELETEBUFFERSPROC ( n.i, *buffers)
Global glDeleteBuffers.PFNGLDELETEBUFFERSPROC
glDeleteBuffers = wglGetProcAddress_( "glDeleteBuffers" )


Prototype PFNGLDELETEVERTEXARRAYSPROC ( n.i, *buffers)
Global glDeleteVertexArrays.PFNGLDELETEVERTEXARRAYSPROC
glDeleteVertexArrays = wglGetProcAddress_( "glDeleteVertexArrays" )

Prototype PFNGLDISABLEVERTEXATTRIBARRAYPROC(index.i)
Global glDisableVertexAttribArray.PFNGLDISABLEVERTEXATTRIBARRAYPROC
glDisableVertexAttribArray = wglGetProcAddress_("glDisableVertexAttribArray")

Prototype PFNGLMAPBUFFERPROC(Target.i, Access.i)
Global glMapBuffer.PFNGLMAPBUFFERPROC
glMapBuffer = wglGetProcAddress_("glMapBuffer")

Prototype PFNGLUNMAPBUFFERPROC(Target.i)
Global glUnmapBuffer.PFNGLUNMAPBUFFERPROC
glUnmapBuffer = wglGetProcAddress_("glUnmapBuffer")
IdeasVacuum
If it sounds simple, you have not grasped the complexity.
Post Reply