Double buffering immediate context draw mempools.
This commit is contained in:
+22
-16
@@ -22,16 +22,17 @@ extern "C"{
|
|||||||
|
|
||||||
#define PLUGIN_ID 0
|
#define PLUGIN_ID 0
|
||||||
|
|
||||||
uint16_t *gIndicesIm2DPtr;
|
uint16_t *gIndicesIm2DPtr[2];
|
||||||
uint16_t *gIndicesIm3DPtr;
|
uint16_t *gIndicesIm3DPtr[2];
|
||||||
float *gVertexBufferIm2DPtr;
|
float *gVertexBufferIm2DPtr[2];
|
||||||
float *gVertexBufferIm3DPtr;
|
float *gVertexBufferIm3DPtr[2];
|
||||||
|
|
||||||
uint16_t *gConstIndices;
|
uint16_t *gConstIndices;
|
||||||
float *gVertexBufferIm2D;
|
float *gVertexBufferIm2D;
|
||||||
float *gVertexBufferIm3D;
|
float *gVertexBufferIm3D;
|
||||||
uint16_t *gIndicesIm2D;
|
uint16_t *gIndicesIm2D;
|
||||||
uint16_t *gIndicesIm3D;
|
uint16_t *gIndicesIm3D;
|
||||||
|
uint8_t ImIdx = 0;
|
||||||
|
|
||||||
namespace rw {
|
namespace rw {
|
||||||
namespace gl3 {
|
namespace gl3 {
|
||||||
@@ -1103,10 +1104,11 @@ beginUpdate(Camera *cam)
|
|||||||
|
|
||||||
setFrameBuffer(cam);
|
setFrameBuffer(cam);
|
||||||
vglStartRendering();
|
vglStartRendering();
|
||||||
gVertexBufferIm2D = gVertexBufferIm2DPtr;
|
ImIdx = (ImIdx + 1) % 2;
|
||||||
gVertexBufferIm3D = gVertexBufferIm3DPtr;
|
gVertexBufferIm2D = gVertexBufferIm2DPtr[ImIdx];
|
||||||
gIndicesIm2D = gIndicesIm2DPtr;
|
gVertexBufferIm3D = gVertexBufferIm3DPtr[ImIdx];
|
||||||
gIndicesIm3D = gIndicesIm3DPtr;
|
gIndicesIm2D = gIndicesIm2DPtr[ImIdx];
|
||||||
|
gIndicesIm3D = gIndicesIm3DPtr[ImIdx];
|
||||||
|
|
||||||
int w, h;
|
int w, h;
|
||||||
if(cam->frameBuffer->type == Raster::CAMERA){
|
if(cam->frameBuffer->type == Raster::CAMERA){
|
||||||
@@ -1351,17 +1353,21 @@ openGLFW(EngineOpenParams *openparams)
|
|||||||
glGlobals.winHeight = openparams->height;
|
glGlobals.winHeight = openparams->height;
|
||||||
glGlobals.winTitle = openparams->windowtitle;
|
glGlobals.winTitle = openparams->windowtitle;
|
||||||
|
|
||||||
gVertexBufferIm2DPtr = (float*)malloc(0x500000);
|
gVertexBufferIm2DPtr[0] = (float*)malloc(0x500000);
|
||||||
gVertexBufferIm3DPtr = (float*)malloc(0x1800000);
|
gVertexBufferIm2DPtr[1] = (float*)malloc(0x500000);
|
||||||
gIndicesIm2DPtr = (uint16_t*)malloc(0x600000);
|
gVertexBufferIm3DPtr[0] = (float*)malloc(0x1800000);
|
||||||
gIndicesIm3DPtr = (uint16_t*)malloc(0x1800000);
|
gVertexBufferIm3DPtr[1] = (float*)malloc(0x1800000);
|
||||||
|
gIndicesIm2DPtr[0] = (uint16_t*)malloc(0x600000);
|
||||||
|
gIndicesIm2DPtr[1] = (uint16_t*)malloc(0x600000);
|
||||||
|
gIndicesIm3DPtr[0] = (uint16_t*)malloc(0x1800000);
|
||||||
|
gIndicesIm3DPtr[1] = (uint16_t*)malloc(0x1800000);
|
||||||
|
|
||||||
gConstIndices = (uint16_t*)malloc(sizeof(uint16_t) * 0xFFFF);
|
gConstIndices = (uint16_t*)malloc(sizeof(uint16_t) * 0xFFFF);
|
||||||
|
|
||||||
gVertexBufferIm2D = gVertexBufferIm2DPtr;
|
gVertexBufferIm2D = gVertexBufferIm2DPtr[0];
|
||||||
gVertexBufferIm3D = gVertexBufferIm3DPtr;
|
gVertexBufferIm3D = gVertexBufferIm3DPtr[0];
|
||||||
gIndicesIm2D = gIndicesIm2DPtr;
|
gIndicesIm2D = gIndicesIm2DPtr[0];
|
||||||
gIndicesIm3D = gIndicesIm3DPtr;
|
gIndicesIm3D = gIndicesIm3DPtr[0];
|
||||||
|
|
||||||
for (uint16_t i = 0; i < 0xFFFF; i++) {
|
for (uint16_t i = 0; i < 0xFFFF; i++) {
|
||||||
gConstIndices[i] = i;
|
gConstIndices[i] = i;
|
||||||
|
|||||||
Reference in New Issue
Block a user