Re: [PyOpenGL-Users] constructing a VBO containing mixture of floats, ubytes, etc
Brought to you by:
mcfletch
|
From: Jonathan H. <ta...@ta...> - 2011-02-03 22:35:13
|
Thanks for all the responses, they are all extremely helpful.
It surprised me to hear that a single VBO can't hold different data
types. SuperBible tentatively confirms what Steve says. Page 485 (5th ed.):
It is also possible to store several different attributes in a
single buffer by interleaving them. To do this, call
glVertexArrayPointer with the stride param set to the distance (in
bytes) between attributes *of the same type.
*
(Emphasis mine) All of the subsequent examples use VBOs filled
exclusively with floats - although sometimes vec4s of float interleaved
with vec3s of float. Is that a confirmation, or am I reading too much
into it?
If I manage to try it out I'll report back how it goes, but I have more
urgent fish to fry for today, because , as Ian suggested early on, it
probably doesn't reap the performance gain I was hoping for, so I'll
stick with colors as floats for now.
*
*Thanks all round, especially to Nicolas whose code I'm greedily poring
over.
Jonathan
On 03/02/2011 18:23, Nicolas Rougier wrote:
>
> Yes you can (see numpy record arrays)
>
> Z = numpy.zeros(100,
> dtype = [('position','f4',3)), ('normal','f4',3),
> ('color','uint8',4)] )
>
> (see example posted previously).
>
> Nicolas
>
>
> On Feb 3, 2011, at 6:49 PM, Stephen Hopkins wrote:
>
>> I dont think its possible to have 2 different data types in the same
>> array. IF you've been using Numpy, each array has a type like float32,
>>
>> zeros(3 * numVertices + 4 * numVertices , dtype=float32)
>>
>> you could make 2 vbos and bind 2 vertexAttribPointers
>>
>> colorVBO = zeros(4 * numVertices, dtype="whatever is unsigned byte")
>> vertexVBO = zeros(3*numVertices, dtype="float32")
>>
>> On Thu, Feb 3, 2011 at 3:49 AM, Jonathan Hartley <ta...@ta...
>> <mailto:ta...@ta...>> wrote:
>>
>> Hey,
>>
>> I am using vbo.VBO, constructed using a single array of (position,
>> color, normal) - all floats. This looks like:
>>
>> self.vbo = vbo.VBO( array( list(
>> list(chain(v, c, n))
>> for v, c, n in zip(verts, colors, normals)
>> ),
>> 'f'
>> ),
>> usage='GL_STATIC_DRAW'
>> )
>>
>> where verts, colors, normals are each generator expressions
>> containing
>> named tuples of (x, y, z) or (r, g, b), etc.
>>
>> My problem is that I want to try out converting the colors to
>> unsigned
>> bytes instead of floats. When I was using vertex arrays instead
>> of VBOs,
>> using unsigned bytes gave me something like 25% better framerates
>> on my
>> hardware (2004 era laptop with ATI), purely from increased
>> rendering speeds.
>>
>> Does it sound likely that I'll see this sort of improvement on other
>> hardware too? Or should I just stick with using colors as floats
>> throughout?
>>
>> If I do go ahead, I'm not certain how to construct the vbo containing
>> mixed types like this. Is there anything in OpenGL.arrays that might
>> help, or do I need to brush up on my ctypes-fu to construct an
>> array of
>> structs manually?
>>
>> I'm happy that I do understand how to assign the vertex attribute
>> pointers once the vbo is constructed.
>>
>> Jonathan
>>
>> --
>> Jonathan Hartley Made of meat. http://tartley.com
>> <http://tartley.com/>
>> ta...@ta... <mailto:ta...@ta...> +44 7737 062
>> 225 twitter/skype: tartley
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
>> Finally, a world-class log management solution at an even better
>> price-free!
>> Download using promo code Free_Logger_4_Dev2Dev. Offer expires
>> February 28th, so secure your free ArcSight Logger TODAY!
>> http://p.sf.net/sfu/arcsight-sfd2d
>> _______________________________________________
>> PyOpenGL Homepage
>> http://pyopengl.sourceforge.net <http://pyopengl.sourceforge.net/>
>> _______________________________________________
>> PyOpenGL-Users mailing list
>> PyO...@li...
>> <mailto:PyO...@li...>
>> https://lists.sourceforge.net/lists/listinfo/pyopengl-users
>>
>>
>> ------------------------------------------------------------------------------
>> Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
>> Finally, a world-class log management solution at an even better
>> price-free!
>> Download using promo code Free_Logger_4_Dev2Dev. Offer expires
>> February 28th, so secure your free ArcSight Logger TODAY!
>> http://p.sf.net/sfu/arcsight-sfd2d_______________________________________________
>> PyOpenGL Homepage
>> http://pyopengl.sourceforge.net
>> _______________________________________________
>> PyOpenGL-Users mailing list
>> PyO...@li...
>> https://lists.sourceforge.net/lists/listinfo/pyopengl-users
>
>
> ------------------------------------------------------------------------------
> Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
> Finally, a world-class log management solution at an even better price-free!
> Download using promo code Free_Logger_4_Dev2Dev. Offer expires
> February 28th, so secure your free ArcSight Logger TODAY!
> http://p.sf.net/sfu/arcsight-sfd2d
>
>
> _______________________________________________
> PyOpenGL Homepage
> http://pyopengl.sourceforge.net
> _______________________________________________
> PyOpenGL-Users mailing list
> PyO...@li...
> https://lists.sourceforge.net/lists/listinfo/pyopengl-users
--
Jonathan Hartley Made of meat. http://tartley.com
ta...@ta... +44 7737 062 225 twitter/skype: tartley
|