Contents User Forum Source Index APIs by Task APIs by Level Data


Change Log

Major version numbers introduce API changes that are not backwards compatible. Minor versions are backwards compatible to the previous major release, except for critical bug fixes. Deprecated functionality will be supported until (at least) the next major release.


Changes in 7.00:

  • Upgraded to iCompile 0.5.3. Requires users to delete their old ice.txt and ~/.icompile files
  • Key to toggle the user camera is now F2 (was Tab)
  • Support for g++ 4.1 [Corey]
  • Patches for 64-bit compilation [Corey]
  • WinMain is now compiled as C++ code (fixed some "manifest" errors on certain VC8 installations)
  • G3D::ShadowMap
  • Cleaned up and documented G3D::GCamera project/unproject API [Jeff Marsceill]
  • Made G3D::MD2Model::Pose easier to use
  • G3D::Matrix
  • Added G3D::Texture methods for reading back color and depth textures
  • G3D::RenderDevice::getFixedFunctionLighting
  • G3D::debugPrintf -> G3D::consolePrintf
  • G3D::GApp::debugPrintf -> G3D::screenPrintf
  • Reduced ArticulatedModel and MD2Model push/popState calls
  • G3D::Shader now defines platform and graphics vendor macros
  • User camera control requires right mouse click to move
  • G3D::AnyVal::fromFile, G3D::AnyVal::load, G3D::AnyVal::save
  • G3D::AnyVal now uses copy-on-mutate for fast Array/Table copies
  • G3D::AnyVal no longer separates table entries with ";"
  • G3D::AnyVal now provides casts to basic data types
  • G3D::AnyVal G3D::Rect2D and G3D::AABox types
  • G3D::NetListener, G3D::ReliableConduit, and G3D::LightweightConduit can now be created without an explicit NetworkDevice pointer
  • GApp::onGraphics now takes posed model arguments
  • G3D::RenderDevice::beginFrame no longer executes a pushState-- state will carry over between frames
  • G3D::GUniqueID
  • GApp::onPose
  • All classes that read from files can now read data inside zipfiles.
  • Changed G3D::hashCode(T) to GHashCode<T>(T) [Corey]
  • Removed "G3D::" from the printed portion of the documentation index to make it easier to read.
  • GWindow::fireEvent for inserting user events into the queue
  • G3D::logPrintf
  • System::findDataFile
  • On OS X, G3D::FirstPersonManipulator now treats ctrl-click as right click
  • Increased mouse sensitivity of G3D::FirstPersonManipulator on OS X
  • System::getClipboardText, System::setClipboardText
  • Widget::window() accessor
  • Replaced SDLEvent with G3D::GEvent
  • Increased GFont rendering performance, added GFont::send2DQuads for fast rendering of large amounts of text
  • G3D::GFont now supports fonts with 256 characters (.fnt file format version 2)
  • Upgraded to the OpenGL 2.0 glext/glxext/wglext headers
  • G3D::GuiSkin, G3D::GuiText
  • G3D::UprightFrame, G3D::UprightSpline
  • G3D::Spline
  • G3D::RenderDevice::clip2D
  • G3D::Win32Window now returns events for up to 5 mouse buttons
  • Significantly changed GEvent delivery and Widget mechanisms to incorporate notions of focus--see upgrade.html
  • Motion events (joystick/mouse) can no longer be cancelled by Widget::onEvent
  • Mouse motion events for all platforms
  • G3D::PosedModel::Ref::sendGeometry
  • G3D::RenderDevice::pushState(FramebufferRef)
  • G3D::Texture::PreProcess::computeNormalMap
  • direct.h is now included by fileutils.h on Win32 to ensure that chdir, mkdir, etc. are available
  • Changed distribution directories to place include, lib, and bin under a directory named after the platform and all other files one directory up.
  • G3D::GCamera::unproject
  • Made G3D::Ray non-virtual for efficiency
  • RenderDevice::alphaWrite now defaults to true
  • Changed G3D install directory from g3d-7_00 to g3d-7.00
  • On a GL 2.0 or greater driver, G3D::GLCaps now assumes the presence of all GL2 extensions even if they are not explicitly listed by the card [Corey Taylor]
  • debugPrintf now flushes stderr on Unix systems
  • G3D::Lighting::fromSky
  • G3D::Texture::newGLTexture2D [Corey Taylor]
  • Added 10-bit cinema texture formats [Corey Taylor]
  • Added G3D::ArticulatedModel to the core (includes 3DS loading)
  • Added G3D::SuperShader to the core
  • Merged GApp and GApplet into GApp to make the common case easier to implement
  • Removed GApp::debugMode options, removed "debug" prefix from most fields.
  • G3D::zipfileExists for testing if a filename path contains a .zip to be opened [Eric]
  • G3D::isZipfile tests the header of a file to see if it is a .zip [Eric]
  • G3D::zipRead and G3D::zipClose to open and close .zip files [Eric]
  • G3D::fileExists supports filename paths that contain .zip [Eric]
  • G3D::fileLength supports filename paths that contain .zip [Eric]
  • G3D::getFiles and G3D::getDirs support filename paths that contain .zip [Eric]
  • Texture::isSupportedImage - static method, returns true if a filename exists and is compatible with Texture [Eric]
  • Viewer (tool) - Allows drag and drop viewing of many supported file formats [Eric]
  • GFXMeter (tool) - Updated for 7.00 compatibility: GApplet structure removed [Eric]
  • GWindow::Settings has an allowMaximize field. Win32Window will have an activated 'Maximize' button if true [Eric]
  • GApp2::debugCamera -> GApp2::defaultCamera
  • GApp2::debugController -> GApp2::defaultController
  • Made GApp2::debugText private
  • Added g3d_WorldLight0 to the G3D shader extensions
  • Added Shader support for GL_FLOAT_MAT3_ARB uniforms
  • Tab (command completion) no longer auto-repeats in GConsole
  • GConsole now limits the key repeat rate to the framerate
  • Removed GApp::Settings::useNetwork because it was no longer needed--Win32 does not trigger firewall checks anymore
  • Optimized AABSPTree balance and queries; now about 20% faster than 6.10, but requires 30 bytes more memory per member
  • G3D::Array::pop now shrinks the underlying array by default (Array::popRemove does not shrink the array and is faster)
  • Fast O(n), non-destructive G3D::Array::partition and G3D::Array::medianPartition
  • Increased ReliableConduit read attempts before timeout from 10 to 100
  • G3D::GImage::pixel1 now returns G3D::Color1uint8*
  • G3D::Color1, G3D::Color1uint8
  • G3D::Image1, G3D::Image1uint8
  • G3D::Image3, G3D::Image3uint8
  • G3D::Image4, G3D::Image4uint8
  • BinaryInput::flipEndian32, BinaryInput::flipEndian16
  • Texture::createEmpty now intializes invertY = true, which is usually desirable for Framebuffer rendering.
  • G3D::Map2D
  • G3D::Vector4int8
  • G3D::PointShape
  • G3D::GImage::RGBAtoRGB
  • Added GLEW compatibility [nico]
  • Added data-files directory to the locations searched for G3D demo data
  • On Win32, assertions now print ot the Output window as well as the dialog box.
  • On Win32, $TEMP is now used for the logfile location instead of c:
  • G3D::GKey replaces old SDL key enumeration
  • Decreased memory requirements and increased balance speed of G3D::AABSPTree by adding a level of indirection between tree nodes and the data stored in them.
  • Added GWindow::Settings::caption
  • Win32 programs must call the macro G3D_START_AT_MAIN(); at top-level if they do not define WinMain themselves.
  • Win32 switched from MBCS to UNICODE for the binaries (G3D sources compile under either, but UNICODE is the VC8 default)
  • Replaced SDL event types with G3D event types
  • Added support for GL_ARB_point_sprite
  • Win32 programs must call the macro G3D_START_AT_MAIN(); at top-level if they do not define WinMain themselves.
  • Win32 switched from MBCS to UNICODE for the binaries (G3D sources compile under either)
  • Changed G3D::GApp::main to return an int
  • Added header support for GL_EXT_geometry_shader4 ("Geometry shaders")
  • Changed IFSModel::create to IFSModel::fromFile
  • G3D::BSPMap for loading Quake3 .bsp files
  • G3D::TextInput::Settings::caseSensitive
  • G3D::TextInput::readBoolean, G3D::TextInput::Settings::trueSymbols, G3D::TextInput::Settings::falseSymbols, G3D::TextOutput::Settings::trueSymbol, G3D::TextOutput::Settings::falseSymbol, G3D::TextOutput::writeBoolean, G3D::Token::BOOLEAN_TYPE
  • G3D::TextInput::Settings::msvcSpecials now defaults to true
  • Made the input to G3D::tessellateComplexPolygon a constant array reference
  • Removed SDL from Win32 build
  • Increased maximum ReliableConduit message size to 60 MB
  • Removed error macro
  • G3D::GConsole
  • Rect2D::lerp
  • Added GL_EXT_packed_depth_stencil
  • Added G3D::TextureFormat::DEPTH24_STENCIL8 packed stencil mode
  • getOpenGLState now includes GL_LIGHT_MODEL_TWO_SIDE value
  • Made ThirdPersonManipulator constructor protected (use ThirdPersonManipulator::create now)
  • G3D::ToneMap
  • Changed Renderbuffer::createEmpty argument order to match Texture::createEmpty
  • G3D::IFSModel can now remove degenerate faces on load
  • G3D::MD2Model::textureFromFile
  • Replaced AABSPTree::beginRayIntersection with simpler AABSPTree::intersectRay interface.
  • G3D::MD2Model now uses floating point texture coordinates, which makes it easier to write pixel shaders for MD2Models
  • G3D::GImage::computeNormalMap now accepts a scale factor indicating how steep the input bump map is
  • Added G3D::Shader support for the GLSL version directive
  • Optimized G3D::GImage::computeNormalMap to use primarily integer math
  • G3D::AABox::contains(AABox)
  • Added large file (>2GB) support to BinaryInput [Peter]
  • Renamed graphics3d.h to G3D/G3D.h
  • Renamed GLG3D.h to GLG3D/GLG3D.h
  • Renamed G3DAll.h to G3D/G3DAll.h
  • G3D::Quat::unitize now normalizes in place
  • Added G3D::Quat::operator*=
  • Removed G3D::FirstPersonManipulator's constructor--use the static G3D::FirstPersonManipulator::create method now.
  • Changed BSPMap leaf bounds from Box to AABox--50% improvement in frustum culling speed
  • Optimized BSPMap rendering performance
  • Removed all deprecated APIs
  • All accessors of the form "getXXX" that take no arguments are now named just "xxx"
  • G3D::Sky::create is now named G3D::Sky::fromFile and no longer accepts a G3D::RenderDevice. G3D::Sky::render now requires a RenderDevice.
  • G3D::GFont::fromFile no longer accepts a G3D::RenderDevice and G3D::GFont::draw2D now requires a RenderDevice.
  • Removed an assertion in BinaryInput requiring that compressed buffers be copied on construction [Nick Bray]
  • Removed CoordinateFrame::zLookDirection (use -1)
  • Removed Capsule::endPoint (use point)
  • Removed CoordinateFrame::getStrafeVector (use rightVector)
  • Removed static constants (use equivalent lower-case methods)
  • Removed Cylinder::getPoint1 (use point)
  • Fix: BSPMap::getStartingPosition now works correctly on all maps [Jeff]
  • Fix: Workaround for ATI drivers that do not support zero-area scissor region
  • Fix: GL_EXT_texture_3D -> GL_EXT_texture3D
  • Fix: ARB_texture_cube_map and EXT_texture_cube_map are now aliases on all cards
  • Fix: EXT_texture_edge_clamp and SGIS_texture_edge_clamp are now aliases on all cards
  • Fix: G3D::Sky now turns off lighting
  • Fix: Win32Window now returns mousebutton and motion events according to the GEvent spec
  • Fix: Win32Window now operates correctly in fullscreen mode
  • Fix: Fixed TGA decode to load from the middle of a binaryinput
  • Fix: Added texture coordinates to posed MD2Models
  • Fix: prompt/debugAssert now correctly responds to button presses on OS X
  • Fix: GConsole now filename completes after the first word
  • Fix: RenderDevice::getDepthBufferValue now checks for the presence of a depth buffer.
  • Fix: G3D::AABSPTree now correctly handles members with infinite bounds on ray intersection tests
  • Fix: Removed use of tmpfile on Unix
  • Fix: Java ReliableConduit now properly waits if the buffer is full when sending
  • Fix: [ 1607693 ] Triangles/Second display is now correct (rates were too low in 6.10)
  • Fix: NetworkDevice now does not perform a test broadcast during initialization
  • Fix: G3D::LightweightConduit::ok is now false if any error occurs during initialization
  • Fix: BSPMAP for cards without glMultiDrawElementsEXT
  • Fix: [ 1584335 ] ReliableConduit incorrectly assumes it's ok
  • Fix: RenderDevide::push2D no longer resets the frameBuffer.
  • Fix: Framebuffer logic for counting number of attachments was broken
  • Fix: [ 1581986 ] Matrix3::fromAxisAngle now normalizes the input vector
  • Fix: [1490643] Linux/FreeBSD/OS X binaries are now compiled with -fno-strict-aliasing, which fixes some memory corruption problems that occurred with full optimizations.
  • Fix: Fixed all warnings on gcc-4.1 and VC8.
  • Fix: Matrix and CoordinateFrame serializers inside G3D::AnyVal dropped data
  • Fix: [ 1535759 ] valgrind finds initialization/deletion errors in TextOutput, Matrix [Chris Demetriou]
  • Fix: Patched MD2Model to automatically reduce animation times to less than 100000; large time were overflowing double->int conversion and causing animations to appear scrambled.
  • Fix: [ 1535292 ] global Table hashCode overloads broken [Chris Demetriou]
  • Fix: [ 1535736 ] Fixed System.cpp memory allocator to compile on 64-bit machines correctly [Chris Demetriou]


Changes in 6.10:


Changes in 6.09:

  • glDepthBoundsEXT
  • G3D::Quat::sameRotation
  • Full loading of the GL_ATI_separate_stencil extension, support within RenderDevice
  • platform.h undefines WIN32_LEAN_AND_MEAN, NOMINMAX after it has defined them
  • G3D::Texture::Settings::maxMipMap
  • Renamed Texture::Parameters to Texture::Settings (backwards compatible typedef added)
  • Optimized IFSModel rendering by increasing internal VAR cache size and reducing the number of state changes. Can now render more than 1000 IFSModels at 30 fps on GeForce 7800.
  • G3D::System::mallocStatus
  • Range checking on Vector2int16::operator[]
  • GImage::BAYER_G8R8_B8G8_to_R8G8B8_MHC, GImage::BAYER_B8G8_G8R8_to_R8G8B8_MHC
  • IFSModel and MD2Model now allocated their posed models using System::malloc
  • Increased the memory maintained by G3D::System for buffer pools up to a total of 13 MB: 8 MB tiny (preallocated), 1 MB small (on demand), 4 MB medium (on demand). This was observed to dramatically increase performance (15x) in real programs that were performance limited by memory allocation time.
  • NetworkDevice now uses Winsock2.0 on Windows (controlled by the G3D_WINSOCK_MAJOR_VERSION/G3D_WINSOCK_MINOR_VERSION settings in NetAddress.h)
  • G3D::Manipulator
  • G3D::GApplet now runs installed G3D::GModules (except for graphics, which is left to the progrmamer)
  • G3D::GApp::addWidget, G3D::GApplet::addWidget, G3D::GApp::removeWidget, G3D::GApplet::removeWidget
  • G3D::Widget, G3D::WidgetManager
  • G3D::System::getEnv()
  • G3D::PosedModel2D
  • G3D::DXCaps
  • Increased precision of several Quat operations
  • G3D::Quat::fuzzyEq
  • G3D::Quat::operator-
  • G3D::LineSegment::length, G3D::LineSegment::point
  • Increased fuzzyEpsilon by a factor of 10 to take into account the new float32 focus of the APIs
  • G3D::RegistryUtil
  • G3D::LineSegment2D
  • G3D::ConvexPolygon2D
  • G3D::AxesShape
  • contrib/shaders/showDepth
  • G3D::Crypto with MD5 and CRC32 hashes
  • TextureManager::findTexture, TextureManager::cacheTexture [Erik]
  • Win32Window::_directInput created on-demand [Erik]
  • WeakReferenceCountedPointer has more comparison operators [Erik]
  • GImage::resolveFormat utility function [Erik]
  • GLCaps supports MESA
  • G3D::Win32Window and G3D::SDLWindow now release input capture and make the mouse visible on destruction
  • G3D::GWindow::setInputCaptureCount, G3D::GWindow::inputCaptureCount, G3D::GWindow::incInputCaptureCount, G3D::GWindow::decInputCaptureCount
  • GImage::makeCheckerboard
  • G3D::Vector3::one()
  • G3D::Shader now supports g3d_size(sampler2D) and g3d_invSize(sampler2D) extensions in GLSL shaders.
  • Renamed GAppSettings to G3D::GApp::Settings (old name is supported but deprecated)
  • Renamed GWindowSettings to G3D::GWindow::Settings (old name is supported but deprecated)
  • Renamed TextInput::Options to G3D::TextInput::Options (old name is supported but deprecated)
  • G3D::FPManualController::setAutoActive for World of Warcraft style controller
  • G3D::isSlash, G3D::isQuote
  • G3D::GApplet::onEvent can now consume (i.e., prevent G3D::GApp from seeing) the event
  • G3D::CoordinateFrame::fuzzyIsIdentity, G3D::CoordinateFrame::isIdentity, G3D::CoordinateFrame::fuzzyEq
  • Matrix3::isOrthonormal
  • [1421201] Removed excess gl (NVIDIA) headers
  • Win32Window destructor now releases the mouse if it was captured and the current GL context is that window and the window was not created from an existing HDC/HWND
  • Fix: com.graphics3d.g3d.ReliableConduit now correctly selects on the waiting socket
  • Fix: [ 1166057 ] AABSPTree::beginBoxIntersection
  • Fix: GLCaps::supports(TextureFormat) now returns correct results on all cards
  • Fix: Shadow map rendering of default PosedModels now enables lighting
  • Fix: G3D::UserInput now restores the mouse position after pureDeltaMouse is turned off
  • Fix: G3D::Win32Window now clips precisely to the client area during an input grab.
  • Fix: [ 1383042 ] free static variables on shutdown
  • Fix: [1449115 ] Texture loading for odd-byte rows
  • Fix: G3D::Win32Window now produces correct character and scan codes for key events
  • Fix: G3D::GApplet::onEvent calls GApplet::processEvent by default
  • Fix: [ 1444320 ] TextInput parsed ".1" as "1" instead of "0.1"
  • Fix: G3D::Shape::type is now const
  • Fix: 0 --> 0.0f FrameBuffer.h [Erik]
  • Fix: Fixed Texture read-back dimensions for cube-map
  • Fix: Missing include in SkyParameters.h [Erik]
  • Fix: Quad triangle counts are now accurate (were off by factor of 4 in 6.08)
  • Fix: contrib/ArticulatedModel now correctly masks all components using the diffuse alpha in fixed function mode
  • Fix: G3D::CoordinateFrame::getHeading was flipped front-to-back
  • Fix: [ 1404487 ] Missing Alt key up/down events on Win32
  • Fix: [ 1484924 ] collisionTimeForMovingPointFixedBox normals


Changes in 6.08:
  • Moved Win32 linker statements out of platform.h for IncrediBuild compatibility.
  • G3D::Texture and G3D::Sky now accept a rescaling factor
  • Added GFont::fromMemory() [Corey]
  • Added optional argument to Quat::slerp() for slerp/lerp angle threshold. [Corey]
  • Across-the-board performance optimizations. Most apps should render 10% faster. Includes removal of Milestones when using VBO VAR [Nick Bray], GFont::draw2D and Draw::rect2D stripped down to raw OpenGL, consistent internal use of float, increased RenderDevice state change optimization.
  • Minimized header interdependencies (GLG3D headers no longer include all of G3D)
  • Added GThread and GMutex classes. [Corey]
  • Added TextureFormat::fromCode(). [Corey]
  • Added Plane::distance() and Plane::closestPoint() helper methods. [Corey]
  • G3D::TextureFormat::code, G3D::TextureFormat::colorSpace
  • incompatible change G3D::MeshAlg::computeTangentSpace basis now computes a right-handed coordinate frame, where the binormal direction is the negative of the direction it faced in G3D 6.07.
  • Exposed G3D::RenderDevice::beforePrimitive and G3D::RenderDevice::afterPrimitive to end-user code for integrating raw OpenGL calls.
  • G3D::Framebuffer and G3D::Renderbuffer to implement the Framebuffer_object extension [Dan Hilferty]
  • G3D::Shader::hasArgument
  • G3D::Texture::getImage
  • Changed SECOND, MINUTE, DAY, HOUR, SUNRISE, SUNSET, MIDNIGHT, METER, KILOMETER to enum values instead of defines
  • G3D::Texture::Parameters; deprecated most Texture constructors in favor of ones that use this class
  • Moved most image manipulation routines into GImage.
  • G3D::GImage now allocates the underlying buffer in multiples of bytes to allow slight overflor for MMX algorithms
  • G3D::GImage::BAYER_R8G8_G8R8_to_R8G8B8_MHC
  • G3D::GImage::R8G8B8_to_Y8U8V8
  • G3D::GImage::Y8U8V8_to_R8G8B8
  • G3D::GImage now supports PPM binary
  • Various Rect2D helpers [Nick Bray]
  • ConvexPolyhedron improved clipping [Nick Bray]
  • G3D::System::build
  • G3D::System::calloc
  • G3D::GImage::convertToRGBA
  • contrib/AVI can read most AVI files on Windows.
  • contrib/wxGWindow now uses wxWidgets 2.6.2
  • G3D_DEBUG now controls whether debug code is enabled; it defaults to the value of _DEBUG
  • zlib upgraded to 1.2.3 [Corey]
  • zlib now statically linked on Win32 (no longer requires zlib1.dll at runtime) [Corey]
  • G3D::MeshShape
  • Changed std::string hashCode to use CRC32 to reduce collisions
  • G3D::crc32
  • Added occlusion query defines [Nick Bray]
  • G3D::Win32Window now shares textures and vertex buffers across all GL contexts
  • G3D::Win32Window now enforces single-threading among GL contexts
  • G3D::GLCaps::slowVBO
  • G3D::VARArea now uses main memory vertex buffers on cards with slow VBO implementations.
  • G3D::Matrix3::toString [Peter]
  • G3D::Matrix4::toString [Peter]
  • G3D::Color3::fromHSV [Peter]
  • G3D::Color3::toHSV [Peter]
  • G3D::Color3::jetColorMap [Peter]
  • Optimized G3D::iRound (now faster than casting!)
  • G3D::MD2Model::create now accepts a scale factor
  • G3D_DEPRECATED macro
  • G3D_CHECK_PRINTF_ARGS, G3D_CHECK_VPRINTF_ARGS macros to allow checking of printf argument strings under gcc at compile time with -Wformat.
  • G3D::TextInput::filename
  • G3D::TextInput::Options::msvcSpecials
  • G3D::TextInput::Options::startingLineNumberOffset
  • G3D::TextInput::readSymbolToken [cgd]
  • G3D::TextInput::readStringToken [cgd]
  • G3D_DEPRECATED macro
  • Threadsafe G3D::ReferenceCountedPointer
  • G3D::AtomicInt32
  • G3D::GThread [Corey]
  • G3D::Array::popDiscard
  • Optimized multi-argument Array::append
  • G3D::GFont 2x faster than in G3D 6.07
  • G3D::RenderDevice::pushState 2x faster than in G3D 6.07
  • G3D::RenderDevice::pushState no longer stores GL texgen and fog information
  • G3D::Draw::fastRect2D
  • G3D::System::outOfMemoryCallback
  • G3D::Queue::fastClear [Chris Demetriou]
  • G3D::Rect2D::x0y1 and x1y0
  • G3D::GLCaps bug tests now run in a separate GL context [Erik Cassel]
  • G3D::GApplet tracks real and simulation time.
  • contrib/Q3Map updated to correctly render instanced objects [Alex Rice]
  • G3D::GWindow subclasses now required to invoke GWindow::loadExtensions
  • G3D::Quat::log for non-unit quats and for real-only quats.
  • G3D::GApplet::doUserInput
  • G3D::GApp prints time for each component
  • G3D::Stopwatch
  • G3D::GWindow::renderDevice()
  • G3D::GWindow::current()
  • G3D::GLCaps::hasBug_redBlueMipmapSwap and workaround for G3D::Texture on Radeon 7500
  • Fix: CollisionDetection::penetrationDepthForFixedSphereFixedPlane() contact point and normal values. [Corey]
  • Fix: Quat::slerp has invalid shortest path [Corey]
  • Fix: G3D::drawFeatureEdges now uses correctly normalized face edges (and offers a crease angle)
  • Fix: G3D::SDLWindow now releases the mouse on Linux during an assertion.
  • Fix: All keys are reset to up when Win32Window loses focus. [Corey]
  • Fix: gaussRandom is unit gaussian [Corey]
  • Fix: [ 1418276 ] 6.08: Unsupported format for depth texture
  • Fix: Ignoring extra/unused set Shader arguments. [Corey]
  • Fix: [ 1229205 ] uniform texture array (Could not set indexed array uniforms). [Corey]
  • Fix: incompatible change BinaryInput/BinaryOutput copy constructors and assignments were accessible. [Corey]
  • Fix: RenderDevice::screenshotPic would corrupt GImage's heap. [Corey]
  • Fix: Alt-Tab window switching caused an invalid Alt key state. [Corey]
  • Fix: Incorrect window size event in Win32Window sent to OpenGL. [Corey]
  • Fix: [ 1227915 ] Textures don't bind on ATI under GLSL.
  • Fix: [ 1358477 ] ray-plane intersection bug [Dan Keefe]
  • Fix: [ 1370665 ] hash_map moved to stdext in VC8 (2005)
  • Fix: ToneMap extended to use DIM_2D_NPOT instead of DIM_2D_RECT
  • Fix: Texture::copyFromScreen now works with DIM_2D_NPOT textures
  • Fix: Wrapped debugAssertM in do {} while (0) to ensure correct compilation in single-line statements [ERik Cassel]
  • Fix: G3D::Draw::cylinder now renders the bottom correctly
  • Fix: Array::front now compiles under gcc
  • Fix: G3D::Ray::distance used to measure against the origin [David]
  • Fix: [ 1293151 ] ArticulatedModel clipping on Radeon -- disabled auto-mipmap generation on mobile radeon 9xxx
  • Fix: G3D::TextInput now parses ^=, character 255 correctly [cgd]
  • Fix: G3D::TextInput now reports line numbers correctly with raw newlines [cgd]
  • Fix: .ICO files with transparency loaded incorrectly [Corey]
  • Fix: G3D::Draw::rect2DBorder inner border was 1 pixel too thick.
  • Fix: [ 1326173 ] Win32Window::init should call makeCurrent.[Erik Cassel]
  • Fix: [ 1326423 ] G3D::Queue::_copy broken [Chris Demetriou]
  • Fix: [ 1313293 ] 6.08: TextInput gets symbol extendedType() wrong [Chris Demetriou]
  • Fix: IFSModel::save, for PLY2 forgot newlines [Peter]
  • Fix: Quat(Matrix3) now computes trace correctly (gave negative quats in some cases)
  • Fix: Setting RenderDevice::polygonOffset now always produces a depth shift, even for faces perpendicular to the view axis.
  • Fix: GImage now auto-resolves formats for files with 1 character base names
  • Fix: WeakReferenceCountedPointer cycle bug
  • Fix: Corrected lag encountered when using some ReliableConduit constructors [Dan Keefe]


Changes in 6.07:


Changes in 6.06:
  • G3D::Lighting::emissiveScale
  • G3D::RenderDevice::drawBuffer
  • G3D::RenderDevice::debugNumMinorStateChanges, debugNumMinorOpenGLStateChanges, debugNumMajorStateChanges, debugNumMajorOpenGLStateChanges.
  • In stereo mode, Texture::copyFromScreen automatically chooses the left/right buffer to read based on the current glDrawBuffer
  • contrib/ArticulatedModel/ToneMap
  • Lazy state changes for shaders
  • 50% performance improvement for G3D::BinaryInput, G3D::BinaryOutput when machine endian matches file endian
  • Textures load with default of maxAnisotroy = 2.0
  • maxAnisotropy argument to G3D::Texture constructors.
  • GLCaps now loads GL_ATI_fragment_shader extension
  • contrib/ArticulatedModel now supports rigid body hierarchies
  • Added TEX_SUBTRACT, TEX_ADD_SIGNED, TEX_DOT3, TEX_DOT3_RGBA modes for G3D::RenderDevice::setTextureCombineMode
  • G3D::RenderDevice now cleans up all static G3D::VARArea s when it shuts down
  • FIX: [ 1208157 ] GLSL slow on ATI
  • FIX: Off-by-one on viewport scale for 2D rendering
  • FIX: MeshAlg::computeTangentSpaceBasis now works correctly
  • FIX: 6.05 enabled all fixed function lights by default. This caused major performance problems on some cards.
  • FIX: Extended cube map workaround to all Radeon Mobility cards
  • FIX: Added check for glBlendEq before calling in RenderDevice
  • FIX: Added a test for GL_EXT_texture_env_add in RenderDevice
  • FIX: [ 1191817 ] unsigned warnings in BinaryInput


Changes in 6.05:

  • G3D::BAYER_G8B8_R8G8_to_R8G8B8_MHC
  • G3D::Quarter_R8G8B8_to_BAYER_G8B8_R8G8
  • G3D::BAYER_G8B8_R8G8_to_Quarter_R8G8B8
  • contrib/Matrix
  • contrib/Java
  • Texture::alphaOnlyVersion
  • Draw::sphere speed improved over 25% with single quad strip (improves Draw::capsule) [Corey]
  • Allow 1-channel GImage saving - BMP (expanded to RGB), PNG [Corey]
  • Allow 1-channel GImage loading - PNG [Corey]
  • Added shader and framebuffer extensions to glext.h
  • All files used during current execution are available via G3D::getFiles() [Corey]
  • Implemented OSX version of glGetCurrentContext with CGL. [Corey + Derek]
  • ReferenceCountedObject is-in-heap checks were removed to allow better multiple and virtual inheritance for reference counted objects. ReferenceCountedPointer still appropriately checks does an is-in-heap check on assignment. [Corey]
  • Added Dev C++ compatability
  • glGetAttribLocationARB
  • Changed GLight == operator to not use memcpy (was causing issues due to byte padding on some compilers)
  • Made CoordinateFrame destructor non-virtual (eliminates vtable)
  • Added new FAQ documentation
  • Added support to G3D::BinaryInput and G3D::BinaryOutput reading and writing huge (larger than available memory) files. Files are still restricted to about 2 GB total, and compressed files must fit entirely in memory.
  • Tweaked allocation strategy for small G3D::Array
  • G3D::Texture::rect2DBounds, G3D::Texture::vector2Bounds
  • G3D::Vector4 * G3D::Vector4, Vector4 / Vector4
  • G3D::Array::operator=(std::vector)
  • G3D::Sky::getEnvironmentMap now returns the top texture on machines that don't support cube maps.
  • glDisableAllTextures()
  • G3D::setFailureHook
  • G3D::Shader::fromStrings now accepts optional names for the vertex and pixel shader
  • G3D::Shader no longer requires values for declared but unused uniform variables
  • G3D::RenderDevice now stores texture matrix at 32-bit precision (for faster push/popState)
  • G3D::RenderDevice::setTextureLODBias
  • G3D::Shader now supports shadow map arguments
  • G3D::Shader::ArgList checks to see if Texture arguments are null
  • G3D::RenderDevice::setAlphaWrite now defaults to true if the GWindow has an alpha channel.
  • G3D::RenderDevice::screenshotPic now supports alpha
  • contrib/VideoSerializer
  • G3D::BinaryOutput::writeBits, G3d::BinaryInput::readBits
  • G3D::Sky can now be initialized with a NULL renderDevice, provided a non-null one is used with the G3D::Sky::render method.
  • G3D::pi(), G3D::halfPi(), G3D::twoPi() added to replace defines [Corey]
  • contrib/Q3Map
  • Increased G3D::Draw::sphere performance using vertex arrays.
  • G3D::Array::fastClear
  • G3D::AABSPTree::insert(Array<T>)
  • G3D::Texture::sizeOfAllTexturesInMemory
  • G3D::VARArea::sizeOfAllVARAreasInMemory
  • G3D::RenderDevice stores cameraToWorldMatrixInverse for faster coordinate system changes.
  • inlined G3D::Matrix3::operator= for performance
  • Created installer for Windows install [Corey]
  • Reorganized the documentation topic index based on abstraction level, added hyperlinks to demo/contrib code
  • G3D::ReliableConduit and G3D::LightweightConduit now send and receive objects directly; no need to make a G3D::NetMessage. G3D::NetMessage and associated methods are now deprecated.
  • Win32 GUI G3D::prompt now auto-expands \n to \r\n in prompt string [Corey]
  • G3D::Draw::frustum
  • Increased timeout and attempts for G3D::ReliableConduit to handle huge (1 MB) packets
  • G3D::BinaryOutput::reset (memory writing only; not supported for disk)
  • Reduced overhead for G3D::ReliableConduit and G3D::LightWeightConduit send routines
  • Added PPM/PGM/PBM ASCII encode/decode support to G3D::GImage [Corey]
  • New G3D::PosedModel rendering methods appropriate for shadow casting (with efficient default implementations).
  • G3D::Lighting
  • Changed RenderDevice::TEX_INTERPOLATE to mean GL_DECAL and added TEX_BLEND for GL_BLEND
  • G3D::CoordinateFrame::upVector
  • G3D::GLight::diffuse
  • G3D::Rect2D::contains is now const
  • Rewrote G3D::BinaryOutput to not use G3D::Array
  • G3D::MD2Model::textureMatrix
  • G3D::MeshAlg::computeBounds(vertex, index, ...)
  • G3D::RenderDevice::colorWriteEnabled(), depthWriteEnabled, alphaWriteEnabled
  • G3D::RenderDevice::setSpecularCoefficient(Color3)
  • G3D::VAR::maxSize
  • G3D::RenderDevice::enableTwoSidedLighting
  • G3D::PosedModel::hasTransparency
  • G3D::PosedModel::sort
  • G3D::RenderDevice::renderMode
  • G3D::MeshAlg::computeNormals(geometry, indexArray);
  • contrib/ArticulatedModel (beta 3DS support)
  • G3D::RenderDevice::swapBuffersAutomatically allows caller to suppress page flip.
  • Added coordinate system documentation.
  • RenderDevice::enableClip2D, RenderDevice::disableClip2D (scissor region)
  • contrib/wxGWindow is stable and full featured-- use wxWidgets 2.5.3 with G3D!
  • G3D::fileIsNewer
  • G3D::isDirectory
  • G3D::filenameContainsWildcards
  • G3D::filenamePath
  • G3D::Draw::lineSegment now accepts a scale (allowing arrows and axes to thicken appropriately)
  • G3D::Rect2D::largestCenteredSubRect
  • G3D::Matrix4::serialize, G3D::Matrix4::deserialize
  • glTexImage3DEXT
  • Removed glut.lib and glut.dll from the win32-lib directory.
  • G3D::writeStringToFile, G3D::TextOutput, and G3D::BinaryOutput now flush by default (safe, not fast).
  • Shifted push2D by 0.375 pixels as recommended in the OpenGL guide to bias integer coords towards pixel centers
  • G3D::Draw::rect2DBorder
  • G3D::Rect2D::border
  • G3D::RenderDevice now creates a G3D::Win32Window on Windows instead of a G3D::SDLWindow. SDLWindow is now deprecated on Windows.
  • G3D::VARArea now updates allocation sizes instead of G3D::VAR internally. Added more accessor methods to VARArea to futher remove VAR from VARArea internals. [Corey]
  • VARSystem.cpp moved to VARArea.cpp - filename change only! [Corey]
  • Linux build system updated: Builds only static libraries, Does not require libtool/libtoolize anymore, Does not check for or require libraries that normally linked with the .so files, Automatically builds Test project with iCompile during install. [Corey]
  • G3D::Quat::deserialize, G3D::Quat::serialize
  • G3D::PhysicsFrame::deserialize, G3D::PhysicsFrame::serialize
  • G3D::TextInput::Options::singleQuotedStrings (defaults to true, changing the behavior from previous versions).
  • G3D::Token::extendedType returns information disambiguating characters and strings and floats and ints.
  • Added data/ah64-body and ah64-rotor
  • demos/Network_Demo now uses a helicopter model instead of a plane
  • G3D::VARArea::gl_vertexBufferObject and G3D::VARArea::gl_basePointer for breaking the VARArea abstraction.
  • GLG3D.h no longer links against SDLMain.lib on Windows if _CONSOLE is defined (since console programs have no WinMain).
  • SDL's redefinition of main is cleared when not linking sdlmain.lib [Corey]
  • Moved contrib/Win32Window to G3D::Win32Window
  • G3D::TextInput::readSymbols
  • contrib/Image [Morgan]
  • contrib/wxGWindow [Morgan]
  • Added support for full-screen antialiasing to contrib/Win32Window
  • Added joystick support to contrib/Win32Window [Corey]
  • Win32Window fully-implements GWindow [Corey]
  • Texture now supports DDS(2D/CubeMap) and PNG files [Corey]
  • Added Win32 pbuffer routines (no G3D wrapper, though-- we're waiting for the new ARB API).
  • G3D::PosedModel::texCoords
  • G3D::IFSModel now loads IFS 1.1 [Peter]
  • G3D::IFSModel now loads and saves PLY2 files (plain text IFS format) [Peter]
  • Automatically switch to glCompressedTexImage2D in G3D::Texture::fromMemory [Corey]
  • Added G3D::Sky::fromCubeMap for preloaded CubeMap Texture::Ref's [Corey]
  • Added G3D::Sky::fromFile and deprecated Sky::create [Corey]
  • Demo and Test projects now build with iCompile, which is included [Corey]
  • Fix: TextOutput::writeString now escapes special characters
  • Fix: AABSPTree::serializeStructure
  • Fix: Properly handle gl_ uniforms on Radeon for Shader
  • Fix: [ 875467 ] OS X debugBreak (requires default XCode debug menu item 'Break on DebugStr()') [Corey + Derek]
  • Fix: Can make a G3D::Texture::fromGImage with one channel (defaults to L8 format)
  • Fix: [ 1149972 ] 6.05: Make Sky render correctly on low-end cards (no Cube mapping) [Corey]
  • Fix: [ 1032742 ] OS X _DEBUG not defined [Derek]
  • Fix: 16-bit integer reads in BinaryInput that always reversed endianness. (OSX file reading) [Corey + Derek]
  • Fix: Matrix4 operator[] was returning a matrix value cast to a pointer [Corey]
  • Fix: Matrix3 and Matrix4 had missing float* / const float* operators [Corey]
  • Fix: Rect2D::clip broken for types other than Vector2
  • Fix: RenderDevice::configureShadowMap result depends on objectToWorldMatrix
  • Fix: [ 1150650 ] DebugBreak() undefined
  • Fix: [ 1111534 ] Network Demo crashes starting 2nd server on same machine
  • Fix: [ 1102091 ] ReliableConduit::receive times out
  • Fix: Implemented MD2Model::objectSpaceBoundingX methods.
  • Fix: G3D::Triangle::area is now zero for zero-area triangles (was inf)
  • Fix: AABSPTree with extent on MSVC 6 no longer enters infinite loop in std::sort
  • Fix: [ 1105641 ] Does not build with g++ 3.4.x [Corey]
  • Fix: [ 1103619 ] RenderDevice::countPrimitive is wrong (changed to RenderDevice::countTriangles) [Corey]
  • Fix: AABSPTree::BoxIntersectionIterator doesn't compile
  • Fix: [ 1101680 ] copyfile won't overwrite (on Windows now overwrites) [Corey]
  • Fix: [ 1101646 ] GCamera::frustum incorrect for non-square viewport
  • Fix: Ultra bright lens flare at sunset [Nicholas Bray]
  • Fix: IP address strings were reversed by NetAddress(std::string)
  • Fix: TextInput now returns end of file token for files without trailing whitespace
  • Fix: [ 1094166 ] 6.05: Release mouse stuck on x-axis [Corey + Morgan]
  • Fix: Recognize buggy ATI Radeon Mobility cube maps and work around
  • Fix: Textures now initialize without setting error bit on cards without GL_ARB_shadow
  • Fix: filenameBaseExt now operates correctly on strings with both \ and / slashes.
  • Fix: [ 1062659 ] BinaryInput::BinaryInput() memory leak
  • Fix: Removed RenderDevice::polygonCount, which was never used.
  • Fix: TextInput::readNumber no longer accepts double preceeding +/- on numbers when Options::signedNumbers is true
  • Fix: [ 1038733 ] GWindow cannot set icon properly [Corey]
  • Fix: [ 939400 ] Linux mouse set position (Wild camera swinging on startup) [Corey]
  • Fix: [ 1042591 ] Software GL Causes Assertion [Corey]
  • Fix: [ 1036634 ] debugAssert doesn't work on MSVC 7 [Corey]
  • Fix: [ 1049024 ] Fix compile warnings from gcc/Linux build [Corey]
  • Fix: [ 1051272 ] Win32Window doesn't use GWindowSettings properly. [Corey]
  • Fix: Win32Window clips the proper cursor region during input capture. [Corey]
  • Fix: GWindows now center and maximize on the primary monitor for Windows.
  • Fix: [ 1052945 ] TextOutput wordWrap starts on newlines
  • Fix: [ 1050957 ] TextInput readNumber support for capital 'E' numbers.
  • Fix: [ 1049674 ] TextInput failes on X. numbers.
  • Fix: [ 1044028 ] Linux TextOutput Warning
  • Fix: [ 1032750 ] Grayscale JPG errors [Corey]
  • Fix: [ 1036225 ] Encode TGA support strips alpha channel [Corey]
  • Fix: [ 1038631 ] CoordinateFrame::slerp (Quat::slerp has fix) [Corey]
  • Fix: [ 1033686 ] GImage::GImage(filename) dies on certain (BMP) images [Corey]
  • Fix: Texture mapping modes for pre-OpenGL 1.3 cards [Dan & Morgan]


Changes in 6.04:

  • G3D Manual! [ Morgan and Sascha ]
  • Initial MSVC7 build script. MSVC7 is not an officially supported platform however the release contains MSVC7 precompiled binaries and the build script will automatically build on both 6 and 7.
  • Improved performance of G3D::writeStringToFile
  • G3D::ReferenceCountedPointer assignment now allows compile time subtyping
  • G3D::ReferenceCountedPointer != operator
  • G3D::ReferenceCountedPointer::notNull
  • G3D::GLight::directional now normalizes the light vector
  • G3D::setAssertionHook
  • [ 1029256 ] G3D::Shader / G3D::VertexAndPixelShader define g3d_ uniforms inside shaders
  • static G3D::IFSModel::save/load for writing/reading IFS files
  • G3D::TextInput allows ' inside quoted strings
  • G3D::TextInput allows \ as a symbol token
  • G3D::TextInput supports an arbitrary comment character (e.g. '#')
  • Precompiled binaries for VisualC++ 7 (.NET 2002/2003)
  • VisualC++ 7 (.NET 2002/2003) supported by build script
  • Build now MOVEs binaries instead of COPYing them on Windows (allows two compilers to output to the same location)
  • G3D Guide overview documentation
  • Changelog and Error FAQ moved under Doxygen
  • Build scripts and documentation now under the 'doc' .dsp on Windows
  • Textures now support a DepthReadMode that can be used to perform hardware shadow map comparisions. RenderDevice::configureShadowMap now requires an appropriately configured texture-- in previous releases it would reconfigure the texture for you.
  • G3D::UserInput::keyReleased, G3D::UserInput::ReleasedKeys
  • G3D::Array::randomElement
  • G3D::Array::insert
  • G3D::RenderDevice::getObjectToWorldMatrix and getCameraToWorldMatrix now return const CoordinateFrame&
  • Optimized G3D::Array::randomize
  • G3D::cyclicCatmullRomSpline
  • G3D::wrap
  • contrib/AudioDevice
  • G3D::System::time();
  • More precise System::sleep
  • G3D::IFSModel::pose with no arguments
  • G3D::AABSPTree::serializeStructure, deserializeStructure,
  • serialize(Vector3::Axis, BinaryOutput), deserialize(Vector3::Axis, BinaryInput),
  • "glslc" GLSL compiler in the tools directory for getting compile-time errors from shaders
  • GLCaps::init now takes optional debug log
  • G3D::VertexAndPixelShader static constructors take optional 'debug' argument
  • GWindowSettings::visible; Win32Window can now start invisible
  • [ 991147 ] glBlendEquationEXT, RenderDevice::BlendEq, min, max, subtract, reverse subtract alpha blending
  • [ 989785 ] Draw::rect2D
  • GLCaps::numTextureCoords, GLCaps::numTextureUnits, GLCaps::numTextures
  • GLCaps::G3D_MAX_TEXTURE_UNITS
  • Rect2D::corner
  • GCamera::getFrustum, GCamera::frustum, GCamera::Frustum, GCamera::Frustum::Face
  • Plane constructor that accepts Vector4s (possibly at infinity)
  • AABox::inf, AABox::zero, AABox::maxFinite
  • AABox::intersects(Sphere)
  • Vector3::minFinite, Vector3::maxFinite
  • Plane::halfSpaceContainsFinite
  • Plane::halfSpaceContains(Vector4)
  • AABSPTree::getIntersectingMembers(Array<Plane>)
  • AABSPTree::getIntersectingMembers(GCamera::Frustum) for view-frustum culling
  • AABSPTree::getIntersectingMembers(Sphere)
  • AABox::split
  • Extended AABox::culledBy, Box::culledBy, and Sphere::culledBy with extra information for bounding volume hierarchies
  • G3D::computeNormalMap
  • Matrix3::fuzzyEq(Matrix3)
  • Removed System::sleep(0.02) from GLG3D demo to give more accurate performance measure
  • [ 965824 ] changed link library defaults
  • serialize/deserialize for int, bool, double, float, std::string
  • G3D::TextOutput
  • [ 976924 ] Texture::texelWidth
  • [ 973413 ] VertexAndPixelShader::ArgList::set can be called more than once per variable
  • GWindow::setIcon(std::string filename)
  • Texture::fromMemory that takes a single image (instead of an array of images)
  • [972604] RenderDevice::setTextureMatrix(uint, Matrix4)
  • [972747] Rect2D::center
  • GImage and Texture now load ICO files
  • GL_SAMPLER_1D_ARB, 2D, 3D, CUBE
  • Win32Window mouse events
  • Added normals to AABox collision results
  • Fix: [ 1026534 ]various cast bugs using Ref types. Removed G3D::ReferenceCountedPointer implicit cast to underlying pointer type This is technically an incompatible change, however we found no occurance in the library or demos using this that was not a bug!
  • Fix: VAR constructor takes VARAreaRef instead of VARArea* Incompatible change
  • Fix: ManualCameraController is prevented from looking precisely along the Y-axis, which would cause a singularity.
  • Fix: Added '?' as a valid symbol Token
  • Fix: [ 946235 ] GFont::align right w/ fixed_spacing
  • Fix: [ 1001033 ] RenderDevice with 0 texture units
  • Fix: GLCaps:: ARB stencil two side -> EXT stencil two side (stencilled shadows were broken)
  • Fix: [ 993449 ] vsnprintf crashes MSVC 7
  • Fix: [ 991320 ] Pointer truncation Warnings
  • Fix: [ 981440 ] AUTO with Texture::fromMemory
  • Fix: Plane::halfSpaceContains now works for infinite and semi-infinite points
  • Fix: [ 979032 ] Quat <-> Matrix3 roundtrip inverts
  • Fix: [ 976743 ] document GLCaps functions
  • Fix: [ 976746 ] include GLCaps in g3dall
  • Fix: [ 973550 ] sampler2DRect now supported in GLSL shaders (NVIDIA only; ATI drivers are broken)
  • Fix: [ 973490 ] Win32Window width/height off by non-client amount
  • Fix: [ 961827 ] In debug mode, RenderDevice tries to access GL_MAX_TEXTURE_IMAGE_UNITS_ARB and an assertion fails on cards that don't support it.
  • Fix: Texture binding for VertexAndPixelShader

Changes in 6.03:

  • Matrix4::approxCoordinateFrame
  • Vector2(const Vector2int16&) [Giulio]
  • RenderDevice::setObjectShader
  • RenderDevice::setVertexAndPixelShader
  • G3D::RenderDevice supports "..._CURRENT" as an option for most settings
  • inf -> inf(), nan -> nan(), NAN -> NAN() This is an incompatible change-- it was needed to fix a bug with the order of initialization of globals
  • GImage::sizeInMemory
  • Defined std::ostream << NetAddress, std::ostream << Vector3
  • 'build doc' copies the contrib directory to the install directory
  • LightweightConduit::PacketSizeException
  • Quat::unitRandom() [Giulio]
  • Color3::wheelRandom
  • GImage::save and encode now const [Thanks Arni Mar Jonsson]
  • LightweightConduit::send that accepts multiple destinations
  • ReliableConduit::multisend
  • Moved IFSBuilder from demos to contrib
  • LightweightConduit and ReliableConduit send/receive can now take references as well as pointers
  • RenderDevice::clear() that takes no arguments
  • RenderDevice::setShader
  • G3D::GApp now catches ShaderGroup::ArgumentError exceptions
  • System::operatingSystem() now includes a version number on Linux
  • SDLWindow no longer initializes the audio system; use SDL_InitSubsytem if you need audio.
  • Extended GLenumToString with GL_SHADER_OBJECTS_ARB types.
  • NVIDIA p-buffer: GLX_SAMPLE_BUFFERS_ARB, GLX_SAMPLES_ARB, GLX_FLOAT_COMPONENTS_NV, glXDestroyGLXPbufferSGIX, glXChooseFBConfigSGIX, glXCreateGLXPbufferSGIX, glXCreateContextWithConfigSGIX, glXQueryGLXPbufferSGIX
  • NVIDIA swap lock: glXJoinSwapGroupNV, glXBindSwapBarrierNV, glXQuerySwapGroupNV, glXQueryMaxSwapGroupsNV, glXQueryFrameCountNV, glXResetFrameCountNV
  • GWindow::requiresMainLoop, GWindow::runMainLoop (Beta)
  • GWindow::pollEvent, SDLWindow::pollEvent
  • G3D::GApp accepts an optional GWindow on construction
  • G3D::VertexAndPixelShader, G3D::ObjectShader (Beta)
  • Deprecated GPUProgram, VertexProgram, and PixelProgram (the OpenGL 1.5 shaders follow a different paradigm than the OpenGL 1.3 ones, so the G3D API must change to match it).
  • Support for GL_ARB_vertex_shader, GL_ARB_fragment_shader, and GL_ARB_shader_objects
  • G3D::drawFeatureEdges
  • const Array<Vector3>& G3D::MD2Model::PosedModel::objectSpaceFaceNormals();
  • G3D::RenderDevice::sendSequentialIndices
  • Network_Demo
  • contrib/Win32Window
  • contrib/pingtest
  • contrib/GlutWindow [Morgan and Dan Keefe]
  • contrib/ObjModel [Corey Taylor]
  • G3D::GLCaps
  • GAppSettings::logFilename
  • Deprecated RenderDevice::suportsOpenGLExtension, RenderDevice::supportsTextureFormat, other supports shortcuts (use GLCaps instead).
  • DiscoveryClient::cleanup
  • Optimized BinaryInput::readUInt32, readUInt16
  • Extended network documentation
  • 'fastlib' build target for G3D library developers
  • glGetVector2, glGetVector3, glGetVector4
  • float * Quat (double * Quat already existed)
  • GApp automatically generates g3d-license.txt at runtime ([RFE#856338] CREDIT.TXT)
  • G3D::license
  • Removed several large files (tag, ppt, exe) from the source zipfile, bringing it down to 3 MB
  • Improved CoordinateFrame:pointToObjectSpace() (RFE#715996) [Giulio]
  • [RFE#945935] Make static constants into functions [Giulio]
  • Fix: LightweightConduit::send verifies that the packet size is smaller than the UDP limit
  • Fix: Multitexture on ATI and Wildcat cards
  • Fix: Incorrect occlusion in GLG3D_Demo (was caused by global constant problem)
  • Fix: [BUG#949377] Checks for stencil extensions [Giulio]
  • Fix: [BUG#922725] Non-multitexture implementation for getTextureState() [Giulio]
  • Fix: Restore ambient light color after RenderDevice::popState
  • Fix: RenderDevice now initializes OpenGL extensions before testing for multitexture [Erik Cassel, Dan Keefe]
  • Fix: Bottom clipping plane of GCamera frustum now correct (was slanted incorrectly, making frustum too big)
  • Fix: GFont::draw2D now returns correct y value (used to be too small)
  • Fix: NetworkDevice now returns useful hostname on Linux (used to be "localhost")
  • Fix: The conduit returned from NetworkDevice::createReliableConduit now has ok() == false when connect fails
  • Fix: Tangent space computation of constant u, v now correct (was missing a factor of 2, leading to slight errors) [Max McGuire]
  • Fix: [ 925456 ] select broken on Linux (Networking was broken on Linux)
  • Fix: getDepthBufferValue off by 1 [Andi Fein]


Changes in 6.02:

  • Default constructor for Line.
  • Various patches to make G3D work with the CAVE [Dan Keefe]
  • AABox::set
  • Made GWindow::setPosition non-const
  • VARArea now tests for the presence of all VBO extensions, on the freak chance that a driver has only partial support (due to a bug)
  • Linux build statically links OpenGL 1.2.1 and loads extensions through OpenGL 1.5 to work around Wildcat Linux driver bug (Windows and Mac statically link OpenGL 1.1 and load extensions through OpenGL 1.5)
  • Triangle stores precomputed edge lengths
  • Ray-triangle with vertex weights
  • Highly optimized ray-triangle intersection test [Tomas Moller & Ben Trumbore]
  • Create a texture from 6 different cube-map filenames
  • Added contrib directory built as part of the 'doc' target
  • contrib/CoreyGWindow: GWindow implementations for various platforms
  • AABSPSet::beginRayIntersection [Pete Hopkins]
  • AABSPTree::beginBoxIntersection
  • CollisionDetection::intersectionTimeForMovingPointFixedAABox, Ray::intersectionTime(AABox) [Pierre Terdiman and Andrew Woo]
  • Triangle::center
  • Renamed KDTreeSet to AABSPTree, old name is defined
  • RenderDevice now works on cards without multitexture
  • void glTexCoord(const G3D::Vector4& t); [Dan Keefe]
  • Overloaded float, double, and int * Matrix3
  • Fix: [ 923944 ] Matrix/Quat ambiguity
  • Fix: fuzzyEq(inf, inf) is true
  • Fix: Triangle::randomPoint returns values outside the triangle
  • Fix: [ 913763 ] tokenTypeToString(Token::END)
  • Fix: Compute number of texture coordinates before RenderDevice::setVideoMode [Dan Keefe]
  • Changed the default depth bits to '0' for wider compatibility (Fix: Unable to create OpenGL screen: Couldn't find matching GLX visual)
  • Fix: [912305] Table, Queue, and Set assignment operators do not free old values
  • Fix: Separate specular and Multisample on Tablet PC w/ Trident [Dan Keefe]
  • Fix: Linux debug build now has line numbers
  • Upgraded to SDL 1.2.7 Fix: [ 838030 ] SDL 1.2.6 blocks prompt Fix: FSAA does not work under SDL Fix: Default Win32 refresh rate
  • Draw::vertexVectors
  • New meshes from Brown University: hemisphere.ifs, curvy.ifs, head.ifs, closed-low-poly-teapot.ifs, bump.ifs
  • GLight::specular
  • SDLWindow::setWindowDimensions and setWindowPosition now work on Win32
  • GWindowSettings::x, GWindowSettings::y, GWindowSettings::center
  • System::setEnv
  • [ 909999 ] GWindow Joystick interface
  • double * Quat ([ 909305 ] scalar * {quat, vector, matrix})
  • Increased the precision of several Vector2 and Vector3 methods
  • MeshAlg::computeNormals now returns 0 instead of NaN for degenerate normals
  • Updated main-no-GApp.cpp for 6.02
  • RenderDevice::screenshotPic can copy from the back buffer
  • Improved VAR documentation.
  • If NO_SDL_MAIN is defined, G3D does not attempt to link against sdlmain.lib
  • UserInput::setPureDeltaMouse
  • UserInput::mouseXY, mouseX, mouseY
  • UserInput::mouseDXY
  • Deprecated UserInput keyMapping constructor argument
  • RenderDevice::setDrawBuffer [Dan Keefe]
  • GFont::draw3D [Dan Keefe]
  • GImage::pixel3(x, y) and GImage::pixel4(x, y)
  • debugAssert, debugBreak, debugAssertM, etc. all release input grab when an assertion fails (Win32 and Linux) and restore it when the program continues (Win32). This also fixes the DirectInput laggy cursor that occurs after a break.


Changes in 6.01:


Changes in 6.00:

  • FIX: warning: passing `double' for argument 1 of `void G3D::Queue<T>::repackAndRealloc(int)'
  • Optimized static Matrix3::transpose (36 cycle) and Matrix3::mul (52 cycle) variations.
  • Changed some lerp arguments from float to double
  • MeshAlg::computeTangentSpaceBasis
  • Draw::axes now uses scale to compute axis length
  • New ParallaxBump demo
  • Changed several Vector3 return values from float to double
  • Real-world stars, sun, and moon path (Nick Musurca)
  • Now compiles under MSVC++ 7.0 (David Baszucki)
  • Now compiles under g++ OS/X (Ben Landon)
  • Changed the default RenderDeviceSettings::alphaBits to 0 in the hope that it will work with more graphics cards.
  • Matrix3::fromX methods became factory methods
  • G3D::sinc
  • Multi-platform lib directories
  • Vector3::average(), Color3::average(), Vector3::sum(), Color3::sum()
  • Ray::reflect, Ray::refract
  • Physically correct sky model
  • FIX: Older graphics cards can now initialize properly
  • Increased fuzzyEpsilon to 0.000001
  • Color3::max, Color3::min, Color4::max, Color4::min
  • Array::sortSubArray
  • GCamera::getClipPlanes now takes a G3D::Array
  • G3D::AABox
  • Box::randomInteriorPoint, Box::randomSurfacePoint
  • Vector3::cosRandom, Vector3::hemiRandom, Vector3::reflectAbout, Vector3::reflectionDirection, Vector3::refractionDirection
  • log(Color3)
  • Upgraded to zlib 1.2.1
  • VAR::valid (Peter)
  • System::getLocalTime, System::getTicks
  • High-performance cycle count and time queries on Linux
  • UserInput::anyKeyPressed
  • G3D::Box now provides axes, center, and extent information (serialization is backwards compatible to 5.xx)
  • TextInput's exceptions now provide file, line, and character numbers as well as preformatted error messages in the style of MSVC++.
  • G3D::Texture::fromGImage
  • G3D::TextInput now parses hex numbers of the form 0x#####
  • G3D::CollisionDetection::penetrationDepthForFixedSphereFixedPlane
  • G3D::CollisionDetection::penetrationDepthForFixedSphereFixedBox
  • G3D::beginMarkShadows, G3D::endMarkShadows, G3D::markShadows
  • GFont::draw2D now returns the string bounds
  • Sphere::surfaceArea, Sphere::volume, Box::surfaceArea, Box::volume
  • Two-sided stencil operations
  • Removed G3D::Real
  • FIX: [ 855947 ] Fonts are broken on Radeon
  • Switched vertex arrays to use the new ARB_vertex_buffer_object extension. Compared to 5.xx rendering speed: NVIDIA/Win32 is the same (fast), ATI and Linux rendering are about 10x faster. The API has changed slightly-- most significant, the vertex, normal, color, etc. arrays must all come from the same VARArea now.
  • Disabled the "conditional is constant" level 4 warning on Windows that is triggered by the for-loop scoping fix.
  • G3D::SkyParameters::directionalLight
  • G3D::TextureManager (Peter S. & Morgan)
  • Flipped skybox X-axis to match OpenGL cube map coordinates
  • Texture now uses hardware MIP-map generation
  • Texture::copyFromScreen for cube map faces
  • RenderDevice::configureReflectionMap
  • RenderDevice::configureShadowMap
  • Renamed CFont to GFont
  • Renamed CImage to GImage
  • G3D::Matrix3::getRow
  • Added optional argument drawCelestialBodies to Sky::create.
  • RenderDevice::getTextureMatrix
  • Depth Textures
  • Texture::createEmpty
  • RenderDevice::setViewport has flipped the y-axis since version 5.00
  • ReferenceCountedPointer::isLastReference
  • Support for textures beyond the number of texture units (which occurs on NVIDIA cards)
  • G3D::PosedModel
  • G3D::IFSModel
  • G3D::CoordinateFrame::normalToObjectSpace, G3D::CoordinateFrame::normalToWorldSpace
  • Simplified arguments on Texture::copyFromScreen
  • Moved Camera in GLG3D to GCamera in G3D
  • Moved setProjectionAndCameraMatrix from Camera to RenderDevice
  • Moved G3D::Rect2D to G3D from GLG3D, changed interface
  • G3D::setRenderMode
  • G3D::RenderDevice::setSpecularCoefficient, G3D::RenderDevice::setShininess
  • G3D::GLight
  • Renamed G3D::RenderDevice::configureDirectionalLight, configurePointLight to G3D::RenderDevice::setLight
  • Changed G3D::Rect2D to use doubles
  • G3D::Camera::setPosition()
  • G3D::Camera::lookAt()
  • G3D::ManualCameraController::setPosition()
  • G3D::System::getTick, G3D::System::getLocalTime
  • Fixed [ 839618 ] peak var only updated on reset()
  • G3D::Array::findIndex (thanks to David Baszucki for the suggestion)
  • Removed RenderDevice::setProjectionMatrix3D and RenderDevice::setProjectionMatrix2D
  • RenderDevice::project
  • RenderDevice::push2D() now uses the current viewport instead of full screen by default
  • RenderDevice::getViewport
  • G3D::SimTime
  • Sky::render no longer needs a camera matrix (it gets it from the render device)
  • SkyRef, Sky::create()
  • Removed Sky::getName
  • Removed RenderDevice::setAmbientLightLevel (duplicated RenderDevice::setAmbientLightColor)
  • G3D::GApp, G3D::GApplet, G3D::GAppSettings
  • RenderDevice::getCardDescription
  • GPUProgram interface for setting program constants [Peter, Morgan & Dan]
  • RenderDevice::getModelViewMatrix
  • RenderDevice::getModelViewProjectionMatrix
  • RenderDevice::getProjectionMatrix
  • Documented some more common compiler errors.
  • Moved RenderDevice::debugDraw methods to the Draw class, changed rendering from cylinders to lines for wireframe (for performance)
  • Ray::direction no longer has unit length
  • Line::point, Line::direction
  • LineSegment::endPoint
  • IFSBuilder loads Brown University Sketch Model (sm) form