mirror of
https://gitlab.com/shinovon/re3-symbian.git
synced 2026-05-22 17:47:20 +03:00
Use ram pointers instead of vbo in gl1immed
This commit is contained in:
parent
2390c67fa1
commit
301498e09e
2 changed files with 32 additions and 47 deletions
|
|
@ -334,6 +334,7 @@ static int MapScanCode(TInt aScanCode, TInt aModifiers) {
|
|||
case 'z':
|
||||
case 'Z':
|
||||
case '1':
|
||||
case EStdKeyDevice3:
|
||||
return JOY_B;
|
||||
case 'x':
|
||||
case 'X':
|
||||
|
|
|
|||
78
vendor/librw/src/gles1/gl1immed.cpp
vendored
78
vendor/librw/src/gles1/gl1immed.cpp
vendored
|
|
@ -17,8 +17,6 @@
|
|||
namespace rw {
|
||||
namespace gles1 {
|
||||
|
||||
uint32 im2DVbo, im2DIbo;
|
||||
|
||||
static int primTypeMap[] = {
|
||||
GL_POINTS, // invalid
|
||||
GL_LINES,
|
||||
|
|
@ -32,15 +30,11 @@ static int primTypeMap[] = {
|
|||
void
|
||||
openIm2D(void)
|
||||
{
|
||||
glGenBuffers(1, &im2DIbo);
|
||||
glGenBuffers(1, &im2DVbo);
|
||||
}
|
||||
|
||||
void
|
||||
closeIm2D(void)
|
||||
{
|
||||
glDeleteBuffers(1, &im2DIbo);
|
||||
glDeleteBuffers(1, &im2DVbo);
|
||||
}
|
||||
|
||||
static Im2DVertex tmpprimbuf[3];
|
||||
|
|
@ -70,15 +64,16 @@ im2DRenderPrimitive(PrimitiveType primType, void *vertices, int32 numVertices)
|
|||
Camera *cam;
|
||||
cam = (Camera*)engine->currentCamera;
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, im2DVbo);
|
||||
glBufferData(GL_ARRAY_BUFFER, numVertices*sizeof(Im2DVertex), vertices, GL_DYNAMIC_DRAW);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glVertexPointer(3, GL_FLOAT, sizeof(Im2DVertex), (void*)0);
|
||||
glVertexPointer(3, GL_FLOAT, sizeof(Im2DVertex), vertices);
|
||||
|
||||
glEnableClientState(GL_COLOR_ARRAY);
|
||||
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Im2DVertex), (void*)OFFSET_OF(Im2DVertex, r));
|
||||
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Im2DVertex), (void*)((uint8*)vertices + OFFSET_OF(Im2DVertex, r)));
|
||||
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
glTexCoordPointer(2, GL_FLOAT, sizeof(Im2DVertex), (void*)OFFSET_OF(Im2DVertex, u));
|
||||
glTexCoordPointer(2, GL_FLOAT, sizeof(Im2DVertex), (void*)((uint8*)vertices + OFFSET_OF(Im2DVertex, u)));
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
|
|
@ -110,18 +105,17 @@ void im2DRenderIndexedPrimitive(PrimitiveType primType,
|
|||
Camera *cam;
|
||||
cam = (Camera*)engine->currentCamera;
|
||||
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, im2DIbo);
|
||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, numIndices*2, indices, GL_DYNAMIC_DRAW);
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, im2DVbo);
|
||||
glBufferData(GL_ARRAY_BUFFER, numVertices*sizeof(Im2DVertex), vertices, GL_DYNAMIC_DRAW);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glVertexPointer(3, GL_FLOAT, sizeof(Im2DVertex), (void*)0);
|
||||
glVertexPointer(3, GL_FLOAT, sizeof(Im2DVertex), vertices);
|
||||
|
||||
glEnableClientState(GL_COLOR_ARRAY);
|
||||
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Im2DVertex), (void*)OFFSET_OF(Im2DVertex, r));
|
||||
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Im2DVertex), (void*)((uint8*)vertices + OFFSET_OF(Im2DVertex, r)));
|
||||
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
glTexCoordPointer(2, GL_FLOAT, sizeof(Im2DVertex), (void*)OFFSET_OF(Im2DVertex, u));
|
||||
glTexCoordPointer(2, GL_FLOAT, sizeof(Im2DVertex), (void*)((uint8*)vertices + OFFSET_OF(Im2DVertex, u)));
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
|
|
@ -133,7 +127,7 @@ void im2DRenderIndexedPrimitive(PrimitiveType primType,
|
|||
glLoadIdentity();
|
||||
|
||||
flushCache();
|
||||
glDrawElements(primTypeMap[primType], numIndices, GL_UNSIGNED_SHORT, nil);
|
||||
glDrawElements(primTypeMap[primType], numIndices, GL_UNSIGNED_SHORT, indices);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPopMatrix();
|
||||
|
|
@ -147,30 +141,17 @@ void im2DRenderIndexedPrimitive(PrimitiveType primType,
|
|||
|
||||
// Im3D
|
||||
|
||||
static AttribDesc im3dattribDesc[3] = {
|
||||
{ ATTRIB_POS, GL_FLOAT, GL_FALSE, 3,
|
||||
sizeof(Im3DVertex), 0 },
|
||||
{ ATTRIB_COLOR, GL_UNSIGNED_BYTE, GL_TRUE, 4,
|
||||
sizeof(Im3DVertex), OFFSET_OF(Im3DVertex, r) },
|
||||
{ ATTRIB_TEXCOORDS0, GL_FLOAT, GL_FALSE, 2,
|
||||
sizeof(Im3DVertex), OFFSET_OF(Im3DVertex, u) },
|
||||
};
|
||||
static uint32 im3DVbo, im3DIbo;
|
||||
static int32 num3DVertices; // not actually needed here
|
||||
static int32 num3DVertices;
|
||||
static void* currentIm3dVertices;
|
||||
|
||||
void
|
||||
openIm3D(void)
|
||||
{
|
||||
glGenBuffers(1, &im3DIbo);
|
||||
glGenBuffers(1, &im3DVbo);
|
||||
}
|
||||
|
||||
void
|
||||
closeIm3D(void)
|
||||
{
|
||||
glDeleteBuffers(1, &im3DIbo);
|
||||
glDeleteBuffers(1, &im3DVbo);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -186,21 +167,23 @@ im3DTransform(void *vertices, int32 numVertices, Matrix *world, uint32 flags)
|
|||
if((flags & im3d::VERTEXUV) == 0)
|
||||
SetRenderStatePtr(TEXTURERASTER, nil);
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, im3DVbo);
|
||||
glBufferData(GL_ARRAY_BUFFER, numVertices*sizeof(Im3DVertex), vertices, GL_DYNAMIC_DRAW);
|
||||
currentIm3dVertices = vertices;
|
||||
num3DVertices = numVertices;
|
||||
}
|
||||
|
||||
void
|
||||
im3DRenderPrimitive(PrimitiveType primType)
|
||||
{
|
||||
glBindBuffer(GL_ARRAY_BUFFER, im3DVbo);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glVertexPointer(3, GL_FLOAT, sizeof(Im3DVertex), (void*)0);
|
||||
glVertexPointer(3, GL_FLOAT, sizeof(Im3DVertex), currentIm3dVertices);
|
||||
|
||||
glEnableClientState(GL_COLOR_ARRAY);
|
||||
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Im3DVertex), (void*)OFFSET_OF(Im3DVertex, r));
|
||||
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Im3DVertex), (void*)((uint8*)currentIm3dVertices + OFFSET_OF(Im3DVertex, r)));
|
||||
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
glTexCoordPointer(2, GL_FLOAT, sizeof(Im3DVertex), (void*)OFFSET_OF(Im3DVertex, u));
|
||||
glTexCoordPointer(2, GL_FLOAT, sizeof(Im3DVertex), (void*)((uint8*)currentIm3dVertices + OFFSET_OF(Im3DVertex, u)));
|
||||
|
||||
flushCache();
|
||||
glDrawArrays(primTypeMap[primType], 0, num3DVertices);
|
||||
|
|
@ -213,19 +196,20 @@ im3DRenderPrimitive(PrimitiveType primType)
|
|||
void
|
||||
im3DRenderIndexedPrimitive(PrimitiveType primType, void *indices, int32 numIndices)
|
||||
{
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, im3DIbo);
|
||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, numIndices*2, indices, GL_STATIC_DRAW);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, im3DVbo);
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glVertexPointer(3, GL_FLOAT, sizeof(Im3DVertex), (void*)0);
|
||||
glVertexPointer(3, GL_FLOAT, sizeof(Im3DVertex), currentIm3dVertices);
|
||||
|
||||
glEnableClientState(GL_COLOR_ARRAY);
|
||||
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Im3DVertex), (void*)OFFSET_OF(Im3DVertex, r));
|
||||
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Im3DVertex), (void*)((uint8*)currentIm3dVertices + OFFSET_OF(Im3DVertex, r)));
|
||||
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
glTexCoordPointer(2, GL_FLOAT, sizeof(Im3DVertex), (void*)OFFSET_OF(Im3DVertex, u));
|
||||
glTexCoordPointer(2, GL_FLOAT, sizeof(Im3DVertex), (void*)((uint8*)currentIm3dVertices + OFFSET_OF(Im3DVertex, u)));
|
||||
|
||||
flushCache();
|
||||
glDrawElements(primTypeMap[primType], numIndices, GL_UNSIGNED_SHORT, nil);
|
||||
glDrawElements(primTypeMap[primType], numIndices, GL_UNSIGNED_SHORT, indices);
|
||||
|
||||
glDisableClientState(GL_VERTEX_ARRAY);
|
||||
glDisableClientState(GL_COLOR_ARRAY);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue