[colobot] 189/377: Added DrawPrimitives() for drawing multiple primitives (not optimized for now)
Didier Raboud
odyx at moszumanska.debian.org
Wed Mar 30 13:34:14 UTC 2016
This is an automated email from the git hooks/post-receive script.
odyx pushed a commit to branch debian/master
in repository colobot.
commit d82b5ef7463488be66e272b1fe5d183a6898fe62
Author: Tomasz Kapuściński <tomaszkax86 at gmail.com>
Date: Wed Dec 23 23:23:10 2015 +0100
Added DrawPrimitives() for drawing multiple primitives (not optimized for now)
---
src/graphics/core/device.h | 12 ++++++++++++
src/graphics/core/nulldevice.cpp | 15 +++++++++++++++
src/graphics/core/nulldevice.h | 11 ++++++++++-
src/graphics/opengl/gl21device.cpp | 33 +++++++++++++++++++++++++++++++++
src/graphics/opengl/gl21device.h | 11 ++++++++++-
src/graphics/opengl/gl33device.cpp | 33 +++++++++++++++++++++++++++++++++
src/graphics/opengl/gl33device.h | 11 ++++++++++-
src/graphics/opengl/gldevice.cpp | 33 +++++++++++++++++++++++++++++++++
src/graphics/opengl/gldevice.h | 11 ++++++++++-
9 files changed, 166 insertions(+), 4 deletions(-)
diff --git a/src/graphics/core/device.h b/src/graphics/core/device.h
index def5b7f..f0dde19 100644
--- a/src/graphics/core/device.h
+++ b/src/graphics/core/device.h
@@ -361,6 +361,18 @@ public:
//! Renders primitive composed of vertices with solid color
virtual void DrawPrimitive(PrimitiveType type, const VertexCol *vertices , int vertexCount) = 0;
+ //! Renders primitives composed of lists of vertices with single texture
+ virtual void DrawPrimitives(PrimitiveType type, const Vertex *vertices,
+ int first[], int count[], int drawCount,
+ Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) = 0;
+ //! Renders primitives composed of lists of vertices with multitexturing (2 textures)
+ virtual void DrawPrimitives(PrimitiveType type, const VertexTex2 *vertices,
+ int first[], int count[], int drawCount,
+ Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) = 0;
+ //! Renders primitives composed of lists of vertices with solid color
+ virtual void DrawPrimitives(PrimitiveType type, const VertexCol *vertices,
+ int first[], int count[], int drawCount) = 0;
+
//! Creates a static buffer composed of given primitives with single texture vertices
virtual unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const Vertex* vertices, int vertexCount) = 0;
diff --git a/src/graphics/core/nulldevice.cpp b/src/graphics/core/nulldevice.cpp
index 303c18b..64302b8 100644
--- a/src/graphics/core/nulldevice.cpp
+++ b/src/graphics/core/nulldevice.cpp
@@ -162,6 +162,21 @@ void CNullDevice::DrawPrimitive(PrimitiveType type, const VertexCol *vertices, i
{
}
+void CNullDevice::DrawPrimitives(PrimitiveType type, const Vertex *vertices,
+ int first[], int count[], int drawCount, Color color)
+{
+}
+
+void CNullDevice::DrawPrimitives(PrimitiveType type, const VertexTex2 *vertices,
+ int first[], int count[], int drawCount, Color color)
+{
+}
+
+void CNullDevice::DrawPrimitives(PrimitiveType type, const VertexCol *vertices,
+ int first[], int count[], int drawCount)
+{
+}
+
unsigned int CNullDevice::CreateStaticBuffer(PrimitiveType primitiveType, const Vertex* vertices, int vertexCount)
{
return 0;
diff --git a/src/graphics/core/nulldevice.h b/src/graphics/core/nulldevice.h
index 3ca387b..214545c 100644
--- a/src/graphics/core/nulldevice.h
+++ b/src/graphics/core/nulldevice.h
@@ -85,7 +85,16 @@ public:
void DrawPrimitive(PrimitiveType type, const Vertex* vertices, int vertexCount, Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
void DrawPrimitive(PrimitiveType type, const VertexTex2* vertices, int vertexCount, Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
- void DrawPrimitive(PrimitiveType type, const VertexCol *vertices , int vertexCount) override;
+ void DrawPrimitive(PrimitiveType type, const VertexCol *vertices, int vertexCount) override;
+
+ void DrawPrimitives(PrimitiveType type, const Vertex *vertices,
+ int first[], int count[], int drawCount,
+ Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
+ void DrawPrimitives(PrimitiveType type, const VertexTex2 *vertices,
+ int first[], int count[], int drawCount,
+ Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
+ void DrawPrimitives(PrimitiveType type, const VertexCol *vertices,
+ int first[], int count[], int drawCount) override;
unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const Vertex* vertices, int vertexCount) override;
unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const VertexTex2* vertices, int vertexCount) override;
diff --git a/src/graphics/opengl/gl21device.cpp b/src/graphics/opengl/gl21device.cpp
index 6b4327a..805286a 100644
--- a/src/graphics/opengl/gl21device.cpp
+++ b/src/graphics/opengl/gl21device.cpp
@@ -1250,6 +1250,39 @@ void CGL21Device::DrawPrimitive(PrimitiveType type, const VertexCol *vertices, i
glDisableClientState(GL_COLOR_ARRAY);
}
+void CGL21Device::DrawPrimitives(PrimitiveType type, const Vertex *vertices,
+ int first[], int count[], int drawCount, Color color)
+{
+ // TODO: use glMultiDrawArrays()
+
+ for (int i = 0; i < drawCount; i++)
+ {
+ DrawPrimitive(type, vertices + first[i], count[i], color);
+ }
+}
+
+void CGL21Device::DrawPrimitives(PrimitiveType type, const VertexTex2 *vertices,
+ int first[], int count[], int drawCount, Color color)
+{
+ // TODO: use glMultiDrawArrays()
+
+ for (int i = 0; i < drawCount; i++)
+ {
+ DrawPrimitive(type, vertices + first[i], count[i], color);
+ }
+}
+
+void CGL21Device::DrawPrimitives(PrimitiveType type, const VertexCol *vertices,
+ int first[], int count[], int drawCount)
+{
+ // TODO: use glMultiDrawArrays()
+
+ for (int i = 0; i < drawCount; i++)
+ {
+ DrawPrimitive(type, vertices + first[i], count[i]);
+ }
+}
+
unsigned int CGL21Device::CreateStaticBuffer(PrimitiveType primitiveType, const Vertex* vertices, int vertexCount)
{
unsigned int id = ++m_lastVboId;
diff --git a/src/graphics/opengl/gl21device.h b/src/graphics/opengl/gl21device.h
index 9e8a18f..c59137e 100644
--- a/src/graphics/opengl/gl21device.h
+++ b/src/graphics/opengl/gl21device.h
@@ -100,7 +100,16 @@ public:
Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
virtual void DrawPrimitive(PrimitiveType type, const VertexTex2 *vertices, int vertexCount,
Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
- void DrawPrimitive(PrimitiveType type, const VertexCol *vertices , int vertexCount) override;
+ virtual void DrawPrimitive(PrimitiveType type, const VertexCol *vertices, int vertexCount) override;
+
+ virtual void DrawPrimitives(PrimitiveType type, const Vertex *vertices,
+ int first[], int count[], int drawCount,
+ Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
+ virtual void DrawPrimitives(PrimitiveType type, const VertexTex2 *vertices,
+ int first[], int count[], int drawCount,
+ Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
+ virtual void DrawPrimitives(PrimitiveType type, const VertexCol *vertices,
+ int first[], int count[], int drawCount) override;
unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const Vertex* vertices, int vertexCount) override;
unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const VertexTex2* vertices, int vertexCount) override;
diff --git a/src/graphics/opengl/gl33device.cpp b/src/graphics/opengl/gl33device.cpp
index 8799013..7ee975c 100644
--- a/src/graphics/opengl/gl33device.cpp
+++ b/src/graphics/opengl/gl33device.cpp
@@ -1328,6 +1328,39 @@ void CGL33Device::DrawPrimitive(PrimitiveType type, const VertexCol *vertices, i
glDrawArrays(TranslateGfxPrimitive(type), 0, vertexCount);
}
+void CGL33Device::DrawPrimitives(PrimitiveType type, const Vertex *vertices,
+ int first[], int count[], int drawCount, Color color)
+{
+ // TODO: use glMultiDrawArrays()
+
+ for (int i = 0; i < drawCount; i++)
+ {
+ DrawPrimitive(type, vertices + first[i], count[i], color);
+ }
+}
+
+void CGL33Device::DrawPrimitives(PrimitiveType type, const VertexTex2 *vertices,
+ int first[], int count[], int drawCount, Color color)
+{
+ // TODO: use glMultiDrawArrays()
+
+ for (int i = 0; i < drawCount; i++)
+ {
+ DrawPrimitive(type, vertices + first[i], count[i], color);
+ }
+}
+
+void CGL33Device::DrawPrimitives(PrimitiveType type, const VertexCol *vertices,
+ int first[], int count[], int drawCount)
+{
+ // TODO: use glMultiDrawArrays()
+
+ for (int i = 0; i < drawCount; i++)
+ {
+ DrawPrimitive(type, vertices + first[i], count[i]);
+ }
+}
+
unsigned int CGL33Device::CreateStaticBuffer(PrimitiveType primitiveType, const Vertex* vertices, int vertexCount)
{
unsigned int id = 0;
diff --git a/src/graphics/opengl/gl33device.h b/src/graphics/opengl/gl33device.h
index b872bb0..79825df 100644
--- a/src/graphics/opengl/gl33device.h
+++ b/src/graphics/opengl/gl33device.h
@@ -102,7 +102,16 @@ public:
Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
virtual void DrawPrimitive(PrimitiveType type, const VertexTex2 *vertices, int vertexCount,
Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
- void DrawPrimitive(PrimitiveType type, const VertexCol *vertices , int vertexCount) override;
+ virtual void DrawPrimitive(PrimitiveType type, const VertexCol *vertices , int vertexCount) override;
+
+ virtual void DrawPrimitives(PrimitiveType type, const Vertex *vertices,
+ int first[], int count[], int drawCount,
+ Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
+ virtual void DrawPrimitives(PrimitiveType type, const VertexTex2 *vertices,
+ int first[], int count[], int drawCount,
+ Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
+ virtual void DrawPrimitives(PrimitiveType type, const VertexCol *vertices,
+ int first[], int count[], int drawCount) override;
unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const Vertex* vertices, int vertexCount) override;
unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const VertexTex2* vertices, int vertexCount) override;
diff --git a/src/graphics/opengl/gldevice.cpp b/src/graphics/opengl/gldevice.cpp
index 5aeab5f..a289e93 100644
--- a/src/graphics/opengl/gldevice.cpp
+++ b/src/graphics/opengl/gldevice.cpp
@@ -1273,6 +1273,39 @@ void CGLDevice::DrawPrimitive(PrimitiveType type, const VertexCol *vertices, int
glDisableClientState(GL_COLOR_ARRAY);
}
+void CGLDevice::DrawPrimitives(PrimitiveType type, const Vertex *vertices,
+ int first[], int count[], int drawCount, Color color)
+{
+ // TODO: use glMultiDrawArrays() for OpenGL 1.4+
+
+ for (int i = 0; i < drawCount; i++)
+ {
+ DrawPrimitive(type, vertices + first[i], count[i], color);
+ }
+}
+
+void CGLDevice::DrawPrimitives(PrimitiveType type, const VertexTex2 *vertices,
+ int first[], int count[], int drawCount, Color color)
+{
+ // TODO: use glMultiDrawArrays() for OpenGL 1.4+
+
+ for (int i = 0; i < drawCount; i++)
+ {
+ DrawPrimitive(type, vertices + first[i], count[i], color);
+ }
+}
+
+void CGLDevice::DrawPrimitives(PrimitiveType type, const VertexCol *vertices,
+ int first[], int count[], int drawCount)
+{
+ // TODO: use glMultiDrawArrays() for OpenGL 1.4+
+
+ for (int i = 0; i < drawCount; i++)
+ {
+ DrawPrimitive(type, vertices + first[i], count[i]);
+ }
+}
+
unsigned int CGLDevice::CreateStaticBuffer(PrimitiveType primitiveType, const Vertex* vertices, int vertexCount)
{
unsigned int id = 0;
diff --git a/src/graphics/opengl/gldevice.h b/src/graphics/opengl/gldevice.h
index 664bdc5..da1d353 100644
--- a/src/graphics/opengl/gldevice.h
+++ b/src/graphics/opengl/gldevice.h
@@ -119,7 +119,16 @@ public:
Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
virtual void DrawPrimitive(PrimitiveType type, const VertexTex2 *vertices, int vertexCount,
Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
- void DrawPrimitive(PrimitiveType type, const VertexCol *vertices , int vertexCount) override;
+ virtual void DrawPrimitive(PrimitiveType type, const VertexCol *vertices, int vertexCount) override;
+
+ virtual void DrawPrimitives(PrimitiveType type, const Vertex *vertices,
+ int first[], int count[], int drawCount,
+ Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
+ virtual void DrawPrimitives(PrimitiveType type, const VertexTex2 *vertices,
+ int first[], int count[], int drawCount,
+ Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)) override;
+ virtual void DrawPrimitives(PrimitiveType type, const VertexCol *vertices,
+ int first[], int count[], int drawCount) override;
unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const Vertex* vertices, int vertexCount) override;
unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const VertexTex2* vertices, int vertexCount) override;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git
More information about the Pkg-games-commits
mailing list