Commit Graph

168 Commits

Author SHA1 Message Date
Robert Osfield
85bb6b327d From Wojciech Lewandowski, "Here are my changes:
- osg::Texture sets GL_MAX_TEXTURE_LEVEL if image uses fewer mipmaps than
number from computeNumberOfMipmaps (and it works!)
- DDS fix to read only available mipmaps
- DDS fixes to read / save 3D textures with mipmaps ( packing == 1 is
required)
- Few cosmetic DDS modifications and comments to make code cleaner (I hope)

Added _isTextureMaxLevelSupported variable to texture extensions. It
could be removed if OSG requires OpenGL version 1.2 by default.

Added simple ComputeImageSizeInBytes function in DDSReaderWrites. In
my opinion it would be better if similar static method was defined for
Image. Then it could be used not only in DDS but other modules as well (I
noticed that Texture/Texture2D do similar computations).

Also attached is an example test.osg model with DDS without last mipmaps to
demonstrate the problem. When loaded into Viewer with current code and moved
far away, so that cube occupies 4 pixels, cube becomes red due to the issue
I described in earlier post. When you patch DDS reader writer with attched
code but no osg::Texture yet, cube becomes blank (at least on my
Windows/NVidia)  When you also merge osg::Texture patch cube will look right
and mipmaps will be correct."
2009-06-19 11:55:52 +00:00
Robert Osfield
ec63cfd930 From Mathias Froehlich, "small addition to osg::Texture to include all possible depth test variants for
the shadow depth comparison."
2009-03-11 13:08:12 +00:00
Robert Osfield
5ab73e9f80 Added support for ImageSequence to all Texture classes 2008-07-22 12:28:46 +00:00
Robert Osfield
f07d106366 Moved enum to public scope and rebuilt wrappers to fix wrapper build error 2008-05-29 13:54:59 +00:00
Robert Osfield
8677c4d6d6 From Michael Platings, "On nvidia cards mipmap generation for non-power-of-two textures with
GL_GENERATE_MIPMAP_SGIS is very slow (over half a second for a 720*576
texture). However, glGenerateMipmapEXT() performs well (16ms for the
same texture), so I have modified the attached files to use
Texture::generateMipmap() if glGenerateMipmapEXT is supported, instead
of enabling & disabling GL_GENERATE_MIPMAP_SGIS."

Notes, from Robert Osfield, I've tested the out of the previous path using
GL_GENERATE_MIPMAP_SGIS and non power of two textures on NVidia 7800GT and
Nvidia linux drivers with the image size 720x576 and only get compile times
of 56ms, so the above half second speed looks to be a driver bug.  With
Muchael's changes the cost goes done to less than 5ms, so it's certainly 
an effective change, even given that Michael's poor expereiences with
GL_GENERATE_MIP_SGIS do look to be a driver bug.
2008-05-28 11:19:41 +00:00
Robert Osfield
ff565128af Introduced new osg::discardDeletedOpenGLObjects() methods, and usage of it in
GrpahicsContext::close() to handle cases where deletingOpenGLObjects is no possible,
such as when GraphicsWindowEmbedded is used.
2008-01-08 13:24:29 +00:00
Robert Osfield
f4afa427a7 From Roland Smeenk, "Attached you will find a large set of small typo fixes (mainly in the comments)." 2007-12-10 17:30:18 +00:00
Robert Osfield
3882ad034c From Mathias Froehlich, "since we patched our hp to an other patchlevel, I need the following to
include/osg/Texture"
2007-10-05 10:46:46 +00:00
Robert Osfield
c51e893ba4 Changed the isTextureIntegerSupported method so that it no longer has the EXT entry in it
for forward compatability reasons.
2007-09-11 12:28:03 +00:00
Robert Osfield
5e83ae4821 From Art Trevs, "Features of the patch are:
- Implementation of integer textures as in EXT_texture_integer

- setBorderColor(Vec4) changed to setBorderColor(Vec4d) to pass double values
as border color. (Probably we have to provide an overloading function to
still support Vec4f ?)

- new method Texture::getInternalFormatType() added. Gives information if the
internal format normalized, float, signed integer or unsigned integer. Can
help people to write better code ;-)

"

Futher changes to this submission by Robert Osfield, changed the dirty mipmap
flag into a buffer_value<> vector to ensure safe handling of multiple contexts.
2007-09-11 12:04:58 +00:00
Robert Osfield
409cdd0b28 Intoduced a new setGLExtensions template method to do a copy of void* pointer to
local function pointer to avoid compiler warnings related to case void*.

Moved various OSG classes across to using setGLExtensions instead of getGLExtensions,
and changed them to use typedef declarations in the headers rather than casts in
the .cpp.

Updated wrappers
2007-09-10 15:19:23 +00:00
Robert Osfield
c747c7dbd6 Moved defined from Texture2DArray into Texture 2007-09-07 13:25:28 +00:00
Robert Osfield
c7a72c8435 From Art Tevs,
"A new texture class Texture2DArray derived from
Texture extends the osg to support the new
EXT_texture_array extensions. Texture arrays provides
a feature for people interesting in GPGPU programming.


Faetures and changes:

- Full support for layered 2D textures.

- New uniform types were added (sampler2DArray)

- FrameBufferObject implementation were changed to
support attaching of 2D array textures to the
framebuffer

- StateSet was slightly changed to support texture
arrays. NOTE: array textures can not be used in fixed
function pipeline. Thus using the layered texture as a
statemode for a Drawable produce invalid enumerant
OpenGL errors.

- Image class was extended to support handling of
array textures

Tests:
I have used this class as a new feature of my
application. It works for me without problems (Note:
Texture arrays were introduced only for shading
languages and not for fixed function pipelines!!!).
RTT with Texture2DArray works, as I have tested them
as texture targets for a camera with 6 layers/faces
(i.e. replacement for cube maps). I am using the array
textures in shader programming. Array textures can be
attached to the FBO and used as input and as output."
2007-09-07 11:21:02 +00:00
Robert Osfield
8414a16e52 From Sherman Wilcox, added extension checking support for compressed texture subloading. 2007-09-03 15:43:58 +00:00
Robert Osfield
579700bedf From Mike Wittman, " noticed that some type references of osg::Drawable::AttributeFunctor, osg::Drawable::ConstAttributeFunctor, and osg::StateAttribute::ModeUsage in osg and osgSim were not being properly reflected in osgIntrospection. This appears to be due to Doxygen not handling nested types from superclasses if they're not qualified when referenced in subclasses.
These changes add the necessary superclass type qualification so that Doxygen now recognizes the references."
2007-03-05 17:34:36 +00:00
Robert Osfield
ff195bddf5 Added Object::resizeGLObjectBuffers(uint) method to help improve the ability
to change the number of active graphics contexts on the fly during an applications
life.
2007-01-04 14:11:51 +00:00
Robert Osfield
ff61a20315 Added const version of getReadPBuffer() 2006-08-25 14:54:54 +00:00
Robert Osfield
f5d9443b78 Fixed const correctness of get shadow functions 2006-08-25 14:53:09 +00:00
Robert Osfield
be60b32add Fixed texture optimization problem associated with mixing already compiled scene graphs - resulting
in incorrect texture assignment.  Solution was to a compareTextureObjects() test to the Texture*::compare(..) method that
the osgUtil::Optimizer::StateSetVisitor uses to determine uniqueness.
2006-08-14 19:42:22 +00:00
Robert Osfield
174e3b3dc3 Fixed RenderToTexture bug which occured when the viewport dimensions where
different than the texture being written to.
2006-08-03 15:57:39 +00:00
Robert Osfield
553d017fd9 From Daniel Trstenjak, build fixes for Hpux 11.11, Irix 6.5, Solaris 8 and Aix 2006-08-02 10:43:26 +00:00
Robert Osfield
d9b6d87d5a Cleaned up per context buffers support 2006-07-26 15:29:26 +00:00
Robert Osfield
f1c2694c17 Updated copyright years. 2006-07-18 15:21:48 +00:00
Robert Osfield
6a2387373c From Eric Sokolowsky, made a couple of methods static. 2006-06-30 13:47:12 +00:00
Robert Osfield
53e075f78b From Brad Colbert/Robert Osfield: added s/getSourceFormat and s/getSourceType to osg::Texture
along with support for this Texture1D, 2D, 3D, TextureCubeMap and TextureRectangle.  The
new SourceFormat and SourceType parameters are only used when no osg::Image is assigned to
an osg::Texture, and main use is for render to texture effects.

Added support for --hdr option in osgprerender, which utilises the new Texture::setSourceFormat/Type() methods.
2005-11-08 15:52:21 +00:00
Robert Osfield
7fc95ddae7 Added graphics context pointer to osg::Texture in prep for support for Pbuffer
Render To Texture.
2005-08-31 12:56:15 +00:00
Robert Osfield
4e69d46289 Further work on trying to get glGenerateMipMapEXT working in conjunction with
frame buffer objects.  Still don't work under Linux yet through :-|
2005-07-27 11:27:44 +00:00
Robert Osfield
2e4b266c39 Added differentiation between Non power of two textures when mip mapped vs
when not mipped mapped to get round the issue of incomplete support under
ATI cards.
2005-05-17 11:00:13 +00:00
Robert Osfield
fc585cd33d From Farshid Lashkari, support for non power of two extension. 2005-05-06 09:04:41 +00:00
Robert Osfield
c4e2e85aa1 From Farshid Lashkari, added Texture::Extension support for non power of two extension. 2005-05-05 09:18:03 +00:00
Robert Osfield
a1bda0dab8 Added support for per context extension string.
Note, this required adding a unsigned int context ID to the osg::isGLUExtensionSupported(,)
and osg::isGLExtensionSupported(,) functions.  This may require reimplementation
of end user code to accomodate the new calling convention.
2005-04-26 13:15:27 +00:00
Robert Osfield
678b22ce83 Updated Copyright notices to 1998-2005. 2005-04-14 21:41:28 +00:00
Robert Osfield
d268cf46fa Renamed SG_LIBRARY and SG_EXPORT macro's to OSG_LIBRARY and OSG_EXPORT 2005-04-11 17:14:17 +00:00
Robert Osfield
b40fe170c7 From Igor Kravtchenko, add #define's for OpenGL float internal texture formats. 2005-02-22 10:16:22 +00:00
Robert Osfield
976140f1d7 Replaced #ifndef GL_TEXTURE_3D by GL_TEXTRE_BINDING_3D as the former was a copy
and paste error.
2004-10-06 12:02:37 +00:00
Robert Osfield
a7a6709d05 Added define of GL_TEXTURE_BINDING_3D for systems with OpenGL1.2 compliant
headers
2004-10-01 09:38:21 +00:00
Robert Osfield
d204a087c3 Added proper handling of 3d texture compression 2004-09-30 09:10:29 +00:00
Robert Osfield
54b45ce3bc Updated to DatabasePager support 2004-09-21 21:33:52 +00:00
Robert Osfield
0d884d66eb Various improvements to database paing. 2004-09-21 17:26:08 +00:00
Robert Osfield
4c4be0a750 From Paul Martz, typo and spelling fixes 2004-09-13 16:10:59 +00:00
Robert Osfield
e5cfe0a27a From Marco Jez, addition of new interal texture formats to osg/Texture and Image.cpp 2004-09-01 08:49:48 +00:00
Robert Osfield
7126ca44e9 Better macro support for switching on/off use of mutex 2004-08-03 11:01:39 +00:00
Robert Osfield
bb5576bef8 Added support s/getImage(uint i) and getNumImages(). 2004-07-27 10:11:45 +00:00
Robert Osfield
c9f5749c12 Added preliminary support for thread safety in various delete GLobjects code 2004-07-21 19:16:49 +00:00
Robert Osfield
aa833acfd3 Added support for releasing GLObjects, and renamed DisplayListVisitor the
GLObjectVisitor to better fit its function, and added support for releasing
objects as well as compiling them.
2004-07-20 05:37:59 +00:00
Robert Osfield
89a4dcbbd3 Added GL_TEXTURE_DEPTH #define for Win32 build 2004-07-06 06:13:34 +00:00
Robert Osfield
48dad727b1 From Bob Kuehne, added getting of the max number of texture units in
the Texture::Extension object
2004-05-07 11:28:55 +00:00
Robert Osfield
715cdcf5e2 From Don Tidrow, changed "setupGLExtenions()" to "setupGLExtensions()" in Texture and
Texture.cpp
2004-04-16 22:50:41 +00:00
Robert Osfield
28759baa98 From Marco Jez, added support NVidia extension to imager formats. 2004-03-14 15:08:12 +00:00
Robert Osfield
358743f999 Added support for APPLE_client_storage of textures. 2004-03-08 17:09:58 +00:00
Robert Osfield
475c583975 From Pavel Moloshtan, add support to osg::Texture files for GL_ARB_shadow_ambinet support 2004-01-29 11:16:49 +00:00
Robert Osfield
635f302a2a Added support for osg::Texture::setBorderWidth(). 2004-01-27 21:29:58 +00:00
Robert Osfield
edce2211fa From Romano Magacho, fixes to handle the subloading from Image when the
internal format changes requiring a rebuild of the texture object.
2004-01-23 13:25:45 +00:00
Robert Osfield
7f76c66a00 Added definition of GL_DEPTH_TEXTURE_MODE_ARB 2003-12-18 16:15:58 +00:00
Robert Osfield
8fefec9f47 From Pavel Moloshtan, added GL_ARB_shadow_support to osg::Texture. 2003-12-17 19:26:16 +00:00
Robert Osfield
8f2a688eff Added TextureObjectManager constructor. 2003-11-04 22:00:16 +00:00
Robert Osfield
8c65920c1f Fixes for Java build. 2003-08-18 09:24:17 +00:00
Robert Osfield
82008d5ecd Updates to the flush rendering objects function calls to allow for
managment of amount of time available to do gl delete's.  This control is
required for constant frame rate applications.
2003-07-15 21:19:03 +00:00
Robert Osfield
1b9d7d458a Added support for texture object manager, which provides an automatic mechansim
for reusing deleted textures.
2003-07-14 14:42:10 +00:00
Robert Osfield
9ab1c960b6 Moved the GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB into its own #ifndef block
to help with OSX support.
2003-05-26 09:29:59 +00:00
Robert Osfield
aaa761e333 Added tests for presense of extensions to osgcubemap, osgvertexproram and
osgmultitexture examples.

Added osg::VertexProgram::Extensions class to better handle multiple graphics
context vertex program extensions.
2003-04-10 19:32:32 +00:00
Robert Osfield
8b03d59be3 Added support for modifying the osg::Texture*:Extensions stuctures.
Added an example modifying osg::Texture::Extensions to osgtext.  Optionally
compiled out by default.
2003-04-10 13:41:45 +00:00
Robert Osfield
22546b8085 Added support for multiple graphics context to osg::VertexProgram and osg::Impostor 2003-04-10 12:11:40 +00:00
Robert Osfield
9f0fa75484 Added support for unref image data after apply in the osg::Texture*
classes.  Only unref's after all graphics context have been applied.
2003-04-07 12:51:00 +00:00
Robert Osfield
7e58786b11 Moved the modified tag's from osg::Texture into the osg::Texture1D,2D,3D and
CubeMap classes.
2003-04-07 09:46:06 +00:00
Robert Osfield
e1e22ab430 Added GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB etc to the Texture header to
allow compilation across platforms.
2003-04-02 20:43:19 +00:00
Robert Osfield
0f3eaeba46 From Rune Schmidt Jensen - new dds loader. 2003-04-02 18:26:34 +00:00
Robert Osfield
3975fc9b01 Improved handling of subloading.
Removed the rescalling of images in osg::Image during texture apply, moving
the rescale so it is locally calculated.  This solves an outstanding threading
problem which occured by multiple draw threads all tried to rescale the same
image at one time.

Made osg::Image ptr in osg::Texture2D non mutable as it is no longer modified
during apply.
2003-04-01 11:49:09 +00:00
Robert Osfield
b728b1dd99 Implemented load and subload methods in osg::Texture/Texture2D. 2003-03-31 21:41:17 +00:00
Robert Osfield
bf184ef7a3 From Tree, added SG_EXPORT to the inner classes for Java binding work. 2003-03-18 19:42:34 +00:00
Robert Osfield
55c25a551b Added support for using the generate mip map extension within osgText. 2003-03-04 15:47:28 +00:00
Robert Osfield
44f88715ae MOre work on uint -> unsigned int. 2003-02-14 19:47:59 +00:00
Robert Osfield
77fee92d71 Renamed futher uint/ushort instances. 2003-02-14 16:52:47 +00:00
Robert Osfield
8f1ba9d21b Removed include/osg/Types header defining osg::ubyte, osg::ushort etc. Changed
any reference to these in the distribution across to using unsigned char,
unsigned short etc.  This has been done to keep the OSG code more opaque
to what types are.
2003-02-12 19:20:47 +00:00
Robert Osfield
48bda9cc79 Added new Copyright/License notice to header and source files. 2003-01-21 16:45:36 +00:00
Robert Osfield
5fca8ea229 Moved Drawable across to using osg::buffered_value.
Added new osg::State::setInterleavedArray() method.

Added new osg::Group::setNode(uint,Node*) method.

Cleaned up and fixed the osg::Texture's handling of dirtyTextureParamters().
2002-11-19 10:56:59 +00:00
Robert Osfield
35b9317baf Fixes to typo of *Dirty() 2002-11-11 16:11:48 +00:00
Robert Osfield
91df37b5c8 Further work on multiple context extensions. 2002-09-16 20:58:05 +00:00
Robert Osfield
bb0022175b Added new buffered_value template class which encapsulates a std::vector but
initializes the array to the number of graphics contexts, and automatically
expands the array when indices outside the current size are required.

Added new osg::Texture::Extensions nested class to handle extensions on a per
context basis.
2002-09-05 11:42:55 +00:00
Robert Osfield
6ff24b338f Added support for multiple graphics contexts to osg::Texture and its
subclasses.
2002-09-04 08:14:04 +00:00
Robert Osfield
12226e4371 Converted the instances of const built in types being returned from methods
and passed as paramters into straight forward non const built in types,
i.e. const bool foogbar(const int) becomes bool foobar(int).
2002-09-02 12:31:35 +00:00
Robert Osfield
8353fc0ed6 Removed deprecated code from the distribution.
Added .osg support for Texture1D and Texture3D.
2002-08-28 15:28:11 +00:00
Robert Osfield
bff4728eac Commented out the #define TEXTURE_USE_DEPRECATED_API from includ/osg/Texture
which forces the use of a typedef Texture2D Texture; in place of the orignal
texure implementation.
2002-08-27 21:01:22 +00:00
Robert Osfield
8e75f531e3 Converted code dependant on osg::Texture across to its replacement osg::Texture2D. 2002-08-25 15:31:44 +00:00
Robert Osfield
239068f223 Added new osg::TextureBase, osg::Texture1D, osg::Texture2D, and osg::Texture3D
classes, and changed osg::Texture and osg::TextureCubeMap so that they now derive
from osg::TextureBase.
2002-08-24 19:39:39 +00:00
Robert Osfield
2ab0f689eb Added Texuture::SubloadCallback example into the osgprerender demo to illustrate
how to use it.

Changed the ImpostorSprite to use LINEAR,LINEAR for min and mag filters for the
impostor texture.
2002-08-16 15:14:43 +00:00
Robert Osfield
7dfefaf67f Added new osg::Texture::SubloadCallback, and getNumMipmapLevels() to osg::Texture
and osg::Image.  This additions are design to make texture subloading more
flexible.
2002-08-16 13:33:32 +00:00
Robert Osfield
824e77e518 Removed inline definition from front of setMaxAnisotropy method. 2002-08-08 15:09:18 +00:00
Robert Osfield
b9b013e15b Changed the support for anisotropic filtering in osg::Texture so that it
is now controlled via the setMaxAnisotropy(float) method, and is set up
independently for the mag filter mode, which it previously was done.
2002-08-07 15:52:24 +00:00
Robert Osfield
6b59f66d80 Checked in new methods for setting up texture subloading, these allow the
user to control which parts on an image are subloaded from, and how big
the initial texture is.
2002-07-28 23:28:27 +00:00
Robert Osfield
05472135b0 Added set/getUnrefImageOnApply() methods and associated flag and
code in Texture::apply() to set the _image to 0 on apply.  Note,
this will only work when you have a single graphics context, as
with multiple graphics contexts one can't delete the image after
the first apply, as there will be more than one texture object to
update.
2002-07-28 21:25:32 +00:00
Robert Osfield
3a964a6b93 Updated docs and added osgGA 2002-07-16 20:07:32 +00:00
Robert Osfield
0c943945f7 Implemented most of the changes required for supporting multitexturing in
the osg::State/osg::StateSet/osg::StateAttribute and related classes.
2002-07-09 09:35:42 +00:00
Robert Osfield
0801b363f5 Work on supporting multitexturing in State/StateSet/StateAttribute/Geoemtry. 2002-07-07 14:40:41 +00:00
Robert Osfield
f2e215bf44 Added conversion to osg::GeoSet::converToGeometry() utility to help the
migration to and testing of the new osg::Geometry class.
2002-06-23 21:43:46 +00:00
Robert Osfield
99580f2212 Addd libraryName() method to osg::Object in preperation for the osgDB support
for node kits plugins.
2002-06-06 13:25:36 +00:00
Robert Osfield
3f84849210 Additions for the support for ConvexPlaneOccluder. Work still underway. 2002-06-03 15:39:41 +00:00
Robert Osfield
56cee8c711 Move the applying of Projection and ModelView matrices into osg::State so that
it now maintains references to the last applied matrices, automatically doing
lazy state updating.  This simplifies the various places in the OSG which
were previously doing the applying, add paves the way for managing the
projection matrix within the scene graph.

Remove MemoryAdapter and mem_ptr as they arn't being used, and can potentially
confuse users by their existance.
2002-03-29 17:26:40 +00:00
Robert Osfield
d421e35c8d A compile fix to the new Texture subload changes. 2002-03-27 23:04:52 +00:00
Robert Osfield
33c89c3be0 Added support for setting the texture subload width and height within
osg::Texture.  The values default to 0, and in this state they are
sizes of the glTexSubImage2D are taken from the source image size.  This
allows the previous setup with no settings for subload size to work as
before.
2002-03-27 22:51:58 +00:00