Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Bolsee <benoit.bolsee@online.be>2009-05-07 23:36:12 +0400
committerBenoit Bolsee <benoit.bolsee@online.be>2009-05-07 23:36:12 +0400
commit1f5ccd19287dbf8faa5e7bdcd62502e35863ede3 (patch)
tree2b849e33104c74bd8b26383d8cf5c1b15e0d58af
parentf590ffdadc0dceac9d37d30dc565ca083c3c7fca (diff)
BGE: unfortunately VA+list still doesn't work on ATI card, so put a specific check for ATI.
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp8
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h1
2 files changed, 6 insertions, 3 deletions
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp
index 3ae4522f8e1..f5324c6fbc9 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp
@@ -104,9 +104,11 @@ bool RAS_ListSlot::End()
RAS_ListRasterizer::RAS_ListRasterizer(RAS_ICanvas* canvas, bool useVertexArrays, bool lock)
: RAS_VAOpenGLRasterizer(canvas, lock),
- mUseVertexArrays(useVertexArrays)
+ mUseVertexArrays(useVertexArrays),
+ mATI(false)
{
- // --
+ if (!strcmp((const char*)glGetString(GL_VENDOR), "ATI Technologies Inc."))
+ mATI = true;
}
RAS_ListRasterizer::~RAS_ListRasterizer()
@@ -214,7 +216,7 @@ void RAS_ListRasterizer::IndexPrimitivesMulti(RAS_MeshSlot& ms)
// workaround: note how we do not use vertex arrays for making display
// lists, since glVertexAttribPointerARB doesn't seem to work correct
// in display lists on ATI? either a bug in the driver or in Blender ..
- if (mUseVertexArrays && /*!localSlot &&*/ !ms.m_pDerivedMesh)
+ if (mUseVertexArrays && !mATI && !ms.m_pDerivedMesh)
RAS_VAOpenGLRasterizer::IndexPrimitivesMulti(ms);
else
RAS_OpenGLRasterizer::IndexPrimitivesMulti(ms);
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
index 19211894896..912f28af6aa 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
@@ -42,6 +42,7 @@ typedef std::map<RAS_DisplayArrayList, RAS_ListSlot*> RAS_ArrayLists;
class RAS_ListRasterizer : public RAS_VAOpenGLRasterizer
{
bool mUseVertexArrays;
+ bool mATI;
RAS_ArrayLists mArrayLists;
RAS_ListSlot* FindOrAdd(class RAS_MeshSlot& ms);