I'm assuming you are referring to the shader program info log message: Validation Failed: No vertex array object bound.
That's a mystery. It doesn't appear on Windows. I find it odd that OS X would require the use of vertex array objects when you open a 3.x context, but that's what the error text appears to imply. I did a quick web search and didn't see any discussion of such a message. -Paul
On 3/2/2012 5:10 PM, David Garcia wrote:
> Following Paul advice I try osgWorks (2.0.0) teapot. I got different errors. In > the state I have add to extract more information: > gc->getState()->setCheckForGLErrors(osg::State::ONCE_PER_ATTRIBUTE);
I cannot help, my knowlenge in GL3 is quite limited. As far as I know Lion implementation is strictly Core profile only and probably OSG is mixing GL3 with older profiles. You can find a bit more information, but not too much, in the Apple Developer forums.
My original problem was to use a GLSL 1.5 program in OSG's Mac version. In Windows and Linux the system will create the best profile possible for OSG, automatically and without enabling GL3 explicitly, and, in my case, is version 3.3. In Mac the developer must create explicitly a 3.2 profile. This is not the case in OSG and my app fails.
As far as I know my only options are either to code the GLSL function in version 1.2 or run OSG in GL3 mode.
Best regards,
David
On Mar 3, 2012, at 2:56 , Paul Martz <pma...@skew-matrix.com> wrote:
> I'm assuming you are referring to the shader program info log message: > Validation Failed: No vertex array object bound.
> That's a mystery. It doesn't appear on Windows. I find it odd that OS X would require the use of vertex array objects when you open a 3.x context, but that's what the error text appears to imply. I did a quick web search and didn't see any discussion of such a message. > -Paul
> On 3/2/2012 5:10 PM, David Garcia wrote: >> Following Paul advice I try osgWorks (2.0.0) teapot. I got different errors. In >> the state I have add to extract more information: >> gc->getState()->setCheckForGLErrors(osg::State::ONCE_PER_ATTRIBUTE);
And then this comment in the next message: "Oups... My Bad. OpenGL 3.2 Core REQUIRES the use of VAOs (not just VBOs...) I added VAO instructions, now It work perfectly !"
Maybe this will make sense to you :)
David
On Mar 3, 2012, at 23:58 , David Garcia <da...@aimsun.com> wrote:
> I cannot help, my knowlenge in GL3 is quite limited. As far as I know Lion implementation is strictly Core profile only and probably OSG is mixing GL3 with older profiles. You can find a bit more information, but not too much, in the Apple Developer forums.
> My original problem was to use a GLSL 1.5 program in OSG's Mac version. In Windows and Linux the system will create the best profile possible for OSG, automatically and without enabling GL3 explicitly, and, in my case, is version 3.3. In Mac the developer must create explicitly a 3.2 profile. This is not the case in OSG and my app fails.
> As far as I know my only options are either to code the GLSL function in version 1.2 or run OSG in GL3 mode.
> Best regards,
> David
> On Mar 3, 2012, at 2:56 , Paul Martz <pma...@skew-matrix.com> wrote:
>> I'm assuming you are referring to the shader program info log message: >> Validation Failed: No vertex array object bound.
>> That's a mystery. It doesn't appear on Windows. I find it odd that OS X would require the use of vertex array objects when you open a 3.x context, but that's what the error text appears to imply. I did a quick web search and didn't see any discussion of such a message. >> -Paul
>> On 3/2/2012 5:10 PM, David Garcia wrote: >>> Following Paul advice I try osgWorks (2.0.0) teapot. I got different errors. In >>> the state I have add to extract more information: >>> gc->getState()->setCheckForGLErrors(osg::State::ONCE_PER_ATTRIBUTE);
The problem was, as you say, the lack of a VAO for the buffer object. I have modified the BufferObject implementation as:
1) In BufferObject include file (after the definition of _glObjectID): GLuint _glVaoID;
2) In BufferObject.cpp (in GLBufferObject::GLBufferObject, before _extensions->glGenBuffers(1, &_glObjectID) ): glGenVertexArrays(1, &_glVaoID ); glBindVertexArray( _glVaoID );
3) In BufferObject.cpp (in GLBufferObject::deleteGLObject after _glObjectID = 0) glDeleteVertexArrays(1, &_glVaoID ); _glVaoID = 0;
Find attached a zip with the new log file.
Best regards,
David
On Mar 4, 2012, at 0:08 , David Garcia <da...@aimsun.com> wrote:
> And then this comment in the next message: > "Oups... My Bad. OpenGL 3.2 Core REQUIRES the use of VAOs (not just VBOs...) > I added VAO instructions, now It work perfectly !"
> Maybe this will make sense to you :)
> David
> On Mar 3, 2012, at 23:58 , David Garcia <da...@aimsun.com> wrote:
>> Paul,
>> I cannot help, my knowlenge in GL3 is quite limited. As far as I know Lion implementation is strictly Core profile only and probably OSG is mixing GL3 with older profiles. You can find a bit more information, but not too much, in the Apple Developer forums.
>> My original problem was to use a GLSL 1.5 program in OSG's Mac version. In Windows and Linux the system will create the best profile possible for OSG, automatically and without enabling GL3 explicitly, and, in my case, is version 3.3. In Mac the developer must create explicitly a 3.2 profile. This is not the case in OSG and my app fails.
>> As far as I know my only options are either to code the GLSL function in version 1.2 or run OSG in GL3 mode.
>> Best regards,
>> David
>> On Mar 3, 2012, at 2:56 , Paul Martz <pma...@skew-matrix.com> wrote:
>>> I'm assuming you are referring to the shader program info log message: >>> Validation Failed: No vertex array object bound.
>>> That's a mystery. It doesn't appear on Windows. I find it odd that OS X would require the use of vertex array objects when you open a 3.x context, but that's what the error text appears to imply. I did a quick web search and didn't see any discussion of such a message. >>> -Paul
>>> On 3/2/2012 5:10 PM, David Garcia wrote: >>>> Following Paul advice I try osgWorks (2.0.0) teapot. I got different errors. In >>>> the state I have add to extract more information: >>>> gc->getState()->setCheckForGLErrors(osg::State::ONCE_PER_ATTRIBUTE);
I believe the poster in that LWJGL thread is mistaken. Vertex array objects are not required in a 3.2 core profile context. See the OpenGL 3.2 core profile spec, which clearly states that a default (ID = 0) vertex array object is used when the app hasn't explicit bound an app-created VAO.
If you are not getting correct rendering unless you bind a VAO, then that sounds like a possible driver bug. On Windows, for example, I am able to get correct rendering if I modify osgsimplegl3 as follows: * Change the "#version 140" to "#version 150" in both shader source strings. * Change the version string from "3.1" to "3.2". * Set the profile bit to 0x1 (WGL's core profile bit). Then, "osgsimplegl3 teapot.osg" renders correctly without any warnings or errors.
Assuming it's a driver bug, I'm not sure how we'd want to work around it. However, I imagine a submission to add VAO support to OSG Drawables might be considered by Robert for inclusion in a future release. -Paul
> And then this comment in the next message: > "Oups... My Bad. OpenGL 3.2 Core REQUIRES the use of VAOs (not just VBOs...) > I added VAO instructions, now It work perfectly !"
> Maybe this will make sense to you :)
> David
> On Mar 3, 2012, at 23:58 , David Garcia <da...@aimsun.com > <mailto:da...@aimsun.com>> wrote:
>> Paul,
>> I cannot help, my knowlenge in GL3 is quite limited. As far as I know Lion >> implementation is strictly Core profile only and probably OSG is mixing GL3 >> with older profiles. You can find a bit more information, but not too much, in >> the Apple Developer forums.
>> My original problem was to use a GLSL 1.5 program in OSG's Mac version. In >> Windows and Linux the system will create the best profile possible for OSG, >> automatically and without enabling GL3 explicitly, and, in my case, is version >> 3.3. In Mac the developer must create explicitly a 3.2 profile. This is not >> the case in OSG and my app fails.
>> As far as I know my only options are either to code the GLSL function in >> version 1.2 or run OSG in GL3 mode.
>> Best regards,
>> David
>> On Mar 3, 2012, at 2:56 , Paul Martz <pma...@skew-matrix.com >> <mailto:pma...@skew-matrix.com>> wrote:
>>> I'm assuming you are referring to the shader program info log message: >>> Validation Failed: No vertex array object bound.
>>> That's a mystery. It doesn't appear on Windows. I find it odd that OS X would >>> require the use of vertex array objects when you open a 3.x context, but >>> that's what the error text appears to imply. I did a quick web search and >>> didn't see any discussion of such a message. >>> -Paul
>>> On 3/2/2012 5:10 PM, David Garcia wrote: >>>> Following Paul advice I try osgWorks (2.0.0) teapot. I got different errors. In >>>> the state I have add to extract more information: >>>> gc->getState()->setCheckForGLErrors(osg::State::ONCE_PER_ATTRIBUTE);
On Mar 4, 2012, at 20:03 , Paul Martz <pma...@skew-matrix.com> wrote:
> I believe the poster in that LWJGL thread is mistaken. Vertex array objects are not required in a 3.2 core profile context. See the OpenGL 3.2 core profile spec, which clearly states that a default (ID = 0) vertex array object is used when the app hasn't explicit bound an app-created VAO.
Yes, I think so too. Unfortunately Apple decides that a VAO is required. I can fill a radar and ask in the developer forums but, for now, what is the best solution?
> If you are not getting correct rendering unless you bind a VAO, then that sounds like a possible driver bug. On Windows, for example, I am able to get correct rendering if I modify osgsimplegl3 as follows: > * Change the "#version 140" to "#version 150" in both shader source strings. > * Change the version string from "3.1" to "3.2". > * Set the profile bit to 0x1 (WGL's core profile bit). > Then, "osgsimplegl3 teapot.osg" renders correctly without any warnings or errors.
> Assuming it's a driver bug, I'm not sure how we'd want to work around it. However, I imagine a submission to add VAO support to OSG Drawables might be considered by Robert for inclusion in a future release. > -Paul
>> And then this comment in the next message: >> "Oups... My Bad. OpenGL 3.2 Core REQUIRES the use of VAOs (not just VBOs...) >> I added VAO instructions, now It work perfectly !"
>> Maybe this will make sense to you :)
>> David
>> On Mar 3, 2012, at 23:58 , David Garcia <da...@aimsun.com >> <mailto:da...@aimsun.com>> wrote:
>>> Paul,
>>> I cannot help, my knowlenge in GL3 is quite limited. As far as I know Lion >>> implementation is strictly Core profile only and probably OSG is mixing GL3 >>> with older profiles. You can find a bit more information, but not too much, in >>> the Apple Developer forums.
>>> My original problem was to use a GLSL 1.5 program in OSG's Mac version. In >>> Windows and Linux the system will create the best profile possible for OSG, >>> automatically and without enabling GL3 explicitly, and, in my case, is version >>> 3.3. In Mac the developer must create explicitly a 3.2 profile. This is not >>> the case in OSG and my app fails.
>>> As far as I know my only options are either to code the GLSL function in >>> version 1.2 or run OSG in GL3 mode.
>>> Best regards,
>>> David
>>> On Mar 3, 2012, at 2:56 , Paul Martz <pma...@skew-matrix.com >>> <mailto:pma...@skew-matrix.com>> wrote:
>>>> I'm assuming you are referring to the shader program info log message: >>>> Validation Failed: No vertex array object bound.
>>>> That's a mystery. It doesn't appear on Windows. I find it odd that OS X would >>>> require the use of vertex array objects when you open a 3.x context, but >>>> that's what the error text appears to imply. I did a quick web search and >>>> didn't see any discussion of such a message. >>>> -Paul
>>>> On 3/2/2012 5:10 PM, David Garcia wrote: >>>>> Following Paul advice I try osgWorks (2.0.0) teapot. I got different errors. In >>>>> the state I have add to extract more information: >>>>> gc->getState()->setCheckForGLErrors(osg::State::ONCE_PER_ATTRIBUTE);
On 4 March 2012 20:55, David Garcia <da...@aimsun.com> wrote:
> Yes, I think so too. Unfortunately Apple decides that a VAO is required. I > can fill a radar and ask in the developer forums but, for now, what is the > best solution?
The think that we should implement proper VAO support. I'm not familiar with this new feature yet, but would guess that it should probably sit in osg::Array and osg::BufferData. I'm open to suggestions.
Has any further discussion or work gone into adding proper VAO support
to OSG? I'm interested in contributing if I can, mostly because I'd
like to see full 3.2 support for OS X.
On Mon, Mar 5, 2012 at 8:22 AM, Robert Osfield <robert.osfi...@gmail.com> wrote:
> Hi David,
> On 4 March 2012 20:55, David Garcia <da...@aimsun.com> wrote:
>> Yes, I think so too. Unfortunately Apple decides that a VAO is required. I
>> can fill a radar and ask in the developer forums but, for now, what is the
>> best solution?
> The think that we should implement proper VAO support. I'm not familiar with
> this new feature yet, but would guess that it should probably sit in
> osg::Array and osg::BufferData. I'm open to suggestions.
Hi Craig -- as far as I know, no one is using vertex array objects with OSG.
I am using OSG built for GL3 in an external OpenGL 3/4 project, but for file loading only, not for rendering. (The external project requires OSG built for GL3 in order to avoid including both gl.h and gl3.h in the same source.) I'm using OSG svn trunk HEAD for this, and it works great on both Windows and OSX (not yet tested on Linux). But the external project does the rendering, not OSG, so my work here doesn't help you with OSG's current lack of VAO support.
I think it'd be great to have VAO support in OSG. You might want to post some design ideas here for discussion, and review by Robert (as it would involve changes to core OSG).
-Paul
> Has any further discussion or work gone into adding proper VAO support
> to OSG? I'm interested in contributing if I can, mostly because I'd
> like to see full 3.2 support for OS X.
> Craig
> On Mon, Mar 5, 2012 at 8:22 AM, Robert Osfield<robert.osfi...@gmail.com> wrote:
>> Hi David,
>> On 4 March 2012 20:55, David Garcia<da...@aimsun.com> wrote:
>>> Yes, I think so too. Unfortunately Apple decides that a VAO is required. I
>>> can fill a radar and ask in the developer forums but, for now, what is the
>>> best solution?
>> The think that we should implement proper VAO support. I'm not familiar with
>> this new feature yet, but would guess that it should probably sit in
>> osg::Array and osg::BufferData. I'm open to suggestions.