mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 18:42:58 +02:00
Fixed draw / do_draw in GLBackends
This commit is contained in:
parent
be7806644a
commit
4e89e9ed2a
5 changed files with 6 additions and 65 deletions
|
@ -71,13 +71,13 @@ void GLBackend::do_generateTextureMips(const Batch& batch, size_t paramOffset) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// DO not transfer the texture, this call is expected for rendering texture
|
// DO not transfer the texture, this call is expected for rendering texture
|
||||||
GLTexture* object = syncGPUObject(resourceTexture);
|
GLTexture* object = syncGPUObject(resourceTexture);
|
||||||
if (!object) {
|
if (!object) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
object->generateMips();
|
object->generateMips();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLBackend::do_generateTextureMipsWithPipeline(const Batch& batch, size_t paramOffset) {
|
void GLBackend::do_generateTextureMipsWithPipeline(const Batch& batch, size_t paramOffset) {
|
||||||
|
|
|
@ -43,34 +43,6 @@ 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;
|
|
||||||
|
|
||||||
if (isStereo()) {
|
|
||||||
#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 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,7 +147,6 @@ 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,35 +66,6 @@ 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;
|
|
||||||
|
|
||||||
if (isStereo()) {
|
|
||||||
#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 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,7 +248,6 @@ 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;
|
||||||
|
|
Loading…
Reference in a new issue