mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 11:13:09 +02:00
Cleaned up do_draw in GLESBackend
This commit is contained in:
parent
ed42c94772
commit
0401858129
7 changed files with 22 additions and 32 deletions
|
@ -177,15 +177,6 @@ void GLBackend::shutdown() {
|
||||||
killShaderBinaryCache();
|
killShaderBinaryCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLBackend::do_draw(const Batch& batch, size_t paramOffset) {
|
|
||||||
Primitive primitiveType = (Primitive)batch._params[paramOffset + 2]._uint;
|
|
||||||
GLenum mode = gl::PRIMITIVE_TO_GL[primitiveType];
|
|
||||||
uint32 numVertices = batch._params[paramOffset + 1]._uint;
|
|
||||||
uint32 startVertex = batch._params[paramOffset + 0]._uint;
|
|
||||||
|
|
||||||
draw(mode, numVertices, startVertex);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GLBackend::renderPassTransfer(const Batch& batch) {
|
void GLBackend::renderPassTransfer(const Batch& batch) {
|
||||||
const size_t numCommands = batch.getCommands().size();
|
const size_t numCommands = batch.getCommands().size();
|
||||||
const Batch::Commands::value_type* command = batch.getCommands().data();
|
const Batch::Commands::value_type* command = batch.getCommands().data();
|
||||||
|
|
|
@ -275,7 +275,7 @@ public:
|
||||||
size_t getMaxNumResourceTextureTables() const { return MAX_NUM_RESOURCE_TABLE_TEXTURES; }
|
size_t getMaxNumResourceTextureTables() const { return MAX_NUM_RESOURCE_TABLE_TEXTURES; }
|
||||||
|
|
||||||
// Draw Stage
|
// Draw Stage
|
||||||
virtual void do_draw(const Batch& batch, size_t paramOffset);
|
virtual void do_draw(const Batch& batch, size_t paramOffset) = 0;
|
||||||
virtual void do_drawIndexed(const Batch& batch, size_t paramOffset) = 0;
|
virtual void do_drawIndexed(const Batch& batch, size_t paramOffset) = 0;
|
||||||
virtual void do_drawInstanced(const Batch& batch, size_t paramOffset) = 0;
|
virtual void do_drawInstanced(const Batch& batch, size_t paramOffset) = 0;
|
||||||
virtual void do_drawIndexedInstanced(const Batch& batch, size_t paramOffset) = 0;
|
virtual void do_drawIndexedInstanced(const Batch& batch, size_t paramOffset) = 0;
|
||||||
|
|
|
@ -43,6 +43,15 @@ void GL41Backend::draw(GLenum mode, uint32 numVertices, uint32 startVertex) {
|
||||||
(void)CHECK_GL_ERROR();
|
(void)CHECK_GL_ERROR();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GL41Backend::do_draw(const Batch& batch, size_t paramOffset) {
|
||||||
|
Primitive primitiveType = (Primitive)batch._params[paramOffset + 2]._uint;
|
||||||
|
GLenum mode = gl::PRIMITIVE_TO_GL[primitiveType];
|
||||||
|
uint32 numVertices = batch._params[paramOffset + 1]._uint;
|
||||||
|
uint32 startVertex = batch._params[paramOffset + 0]._uint;
|
||||||
|
|
||||||
|
draw(mode, numVertices, startVertex);
|
||||||
|
}
|
||||||
|
|
||||||
void GL41Backend::do_drawIndexed(const Batch& batch, size_t paramOffset) {
|
void GL41Backend::do_drawIndexed(const Batch& batch, size_t paramOffset) {
|
||||||
Primitive primitiveType = (Primitive)batch._params[paramOffset + 2]._uint;
|
Primitive primitiveType = (Primitive)batch._params[paramOffset + 2]._uint;
|
||||||
GLenum mode = gl::PRIMITIVE_TO_GL[primitiveType];
|
GLenum mode = gl::PRIMITIVE_TO_GL[primitiveType];
|
||||||
|
|
|
@ -147,6 +147,7 @@ protected:
|
||||||
GLQuery* syncGPUObject(const Query& query) override;
|
GLQuery* syncGPUObject(const Query& query) override;
|
||||||
|
|
||||||
// Draw Stage
|
// Draw Stage
|
||||||
|
void do_draw(const Batch& batch, size_t paramOffset) override;
|
||||||
void do_drawIndexed(const Batch& batch, size_t paramOffset) override;
|
void do_drawIndexed(const Batch& batch, size_t paramOffset) override;
|
||||||
void do_drawInstanced(const Batch& batch, size_t paramOffset) override;
|
void do_drawInstanced(const Batch& batch, size_t paramOffset) override;
|
||||||
void do_drawIndexedInstanced(const Batch& batch, size_t paramOffset) override;
|
void do_drawIndexedInstanced(const Batch& batch, size_t paramOffset) override;
|
||||||
|
|
|
@ -66,6 +66,15 @@ void GL45Backend::draw(GLenum mode, uint32 numVertices, uint32 startVertex) {
|
||||||
(void)CHECK_GL_ERROR();
|
(void)CHECK_GL_ERROR();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GL45Backend::do_draw(const Batch& batch, size_t paramOffset) {
|
||||||
|
Primitive primitiveType = (Primitive)batch._params[paramOffset + 2]._uint;
|
||||||
|
GLenum mode = gl::PRIMITIVE_TO_GL[primitiveType];
|
||||||
|
uint32 numVertices = batch._params[paramOffset + 1]._uint;
|
||||||
|
uint32 startVertex = batch._params[paramOffset + 0]._uint;
|
||||||
|
|
||||||
|
draw(mode, numVertices, startVertex);
|
||||||
|
}
|
||||||
|
|
||||||
void GL45Backend::do_drawIndexed(const Batch& batch, size_t paramOffset) {
|
void GL45Backend::do_drawIndexed(const Batch& batch, size_t paramOffset) {
|
||||||
Primitive primitiveType = (Primitive)batch._params[paramOffset + 2]._uint;
|
Primitive primitiveType = (Primitive)batch._params[paramOffset + 2]._uint;
|
||||||
GLenum mode = gl::PRIMITIVE_TO_GL[primitiveType];
|
GLenum mode = gl::PRIMITIVE_TO_GL[primitiveType];
|
||||||
|
|
|
@ -248,6 +248,7 @@ protected:
|
||||||
GLQuery* syncGPUObject(const Query& query) override;
|
GLQuery* syncGPUObject(const Query& query) override;
|
||||||
|
|
||||||
// Draw Stage
|
// Draw Stage
|
||||||
|
void do_draw(const Batch& batch, size_t paramOffset) override;
|
||||||
void do_drawIndexed(const Batch& batch, size_t paramOffset) override;
|
void do_drawIndexed(const Batch& batch, size_t paramOffset) override;
|
||||||
void do_drawInstanced(const Batch& batch, size_t paramOffset) override;
|
void do_drawInstanced(const Batch& batch, size_t paramOffset) override;
|
||||||
void do_drawIndexedInstanced(const Batch& batch, size_t paramOffset) override;
|
void do_drawIndexedInstanced(const Batch& batch, size_t paramOffset) override;
|
||||||
|
|
|
@ -49,28 +49,7 @@ void GLESBackend::do_draw(const Batch& batch, size_t paramOffset) {
|
||||||
uint32 numVertices = batch._params[paramOffset + 1]._uint;
|
uint32 numVertices = batch._params[paramOffset + 1]._uint;
|
||||||
uint32 startVertex = batch._params[paramOffset + 0]._uint;
|
uint32 startVertex = batch._params[paramOffset + 0]._uint;
|
||||||
|
|
||||||
if (isStereo()) {
|
draw(mode, numVertices, startVertex);
|
||||||
#ifdef GPU_STEREO_DRAWCALL_INSTANCED
|
|
||||||
glDrawArraysInstanced(mode, startVertex, numVertices, 2);
|
|
||||||
#else
|
|
||||||
|
|
||||||
setupStereoSide(0);
|
|
||||||
glDrawArrays(mode, startVertex, numVertices);
|
|
||||||
setupStereoSide(1);
|
|
||||||
glDrawArrays(mode, startVertex, numVertices);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
_stats._DSNumTriangles += 2 * numVertices / 3;
|
|
||||||
_stats._DSNumDrawcalls += 2;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
glDrawArrays(mode, startVertex, numVertices);
|
|
||||||
_stats._DSNumTriangles += numVertices / 3;
|
|
||||||
_stats._DSNumDrawcalls++;
|
|
||||||
}
|
|
||||||
_stats._DSNumAPIDrawcalls++;
|
|
||||||
|
|
||||||
(void) CHECK_GL_ERROR();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLESBackend::do_drawIndexed(const Batch& batch, size_t paramOffset) {
|
void GLESBackend::do_drawIndexed(const Batch& batch, size_t paramOffset) {
|
||||||
|
|
Loading…
Reference in a new issue