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 'Z':
|
case 'Z':
|
||||||
case '1':
|
case '1':
|
||||||
|
case EStdKeyDevice3:
|
||||||
return JOY_B;
|
return JOY_B;
|
||||||
case 'x':
|
case 'x':
|
||||||
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 rw {
|
||||||
namespace gles1 {
|
namespace gles1 {
|
||||||
|
|
||||||
uint32 im2DVbo, im2DIbo;
|
|
||||||
|
|
||||||
static int primTypeMap[] = {
|
static int primTypeMap[] = {
|
||||||
GL_POINTS, // invalid
|
GL_POINTS, // invalid
|
||||||
GL_LINES,
|
GL_LINES,
|
||||||
|
|
@ -32,15 +30,11 @@ static int primTypeMap[] = {
|
||||||
void
|
void
|
||||||
openIm2D(void)
|
openIm2D(void)
|
||||||
{
|
{
|
||||||
glGenBuffers(1, &im2DIbo);
|
|
||||||
glGenBuffers(1, &im2DVbo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
closeIm2D(void)
|
closeIm2D(void)
|
||||||
{
|
{
|
||||||
glDeleteBuffers(1, &im2DIbo);
|
|
||||||
glDeleteBuffers(1, &im2DVbo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Im2DVertex tmpprimbuf[3];
|
static Im2DVertex tmpprimbuf[3];
|
||||||
|
|
@ -70,15 +64,16 @@ im2DRenderPrimitive(PrimitiveType primType, void *vertices, int32 numVertices)
|
||||||
Camera *cam;
|
Camera *cam;
|
||||||
cam = (Camera*)engine->currentCamera;
|
cam = (Camera*)engine->currentCamera;
|
||||||
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, im2DVbo);
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||||
glBufferData(GL_ARRAY_BUFFER, numVertices*sizeof(Im2DVertex), vertices, GL_DYNAMIC_DRAW);
|
|
||||||
|
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
glVertexPointer(3, GL_FLOAT, sizeof(Im2DVertex), (void*)0);
|
glVertexPointer(3, GL_FLOAT, sizeof(Im2DVertex), vertices);
|
||||||
|
|
||||||
glEnableClientState(GL_COLOR_ARRAY);
|
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);
|
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);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
|
|
@ -110,18 +105,17 @@ void im2DRenderIndexedPrimitive(PrimitiveType primType,
|
||||||
Camera *cam;
|
Camera *cam;
|
||||||
cam = (Camera*)engine->currentCamera;
|
cam = (Camera*)engine->currentCamera;
|
||||||
|
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, im2DIbo);
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, numIndices*2, indices, GL_DYNAMIC_DRAW);
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||||
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, im2DVbo);
|
|
||||||
glBufferData(GL_ARRAY_BUFFER, numVertices*sizeof(Im2DVertex), vertices, GL_DYNAMIC_DRAW);
|
|
||||||
|
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
glVertexPointer(3, GL_FLOAT, sizeof(Im2DVertex), (void*)0);
|
glVertexPointer(3, GL_FLOAT, sizeof(Im2DVertex), vertices);
|
||||||
|
|
||||||
glEnableClientState(GL_COLOR_ARRAY);
|
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);
|
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);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
|
|
@ -133,7 +127,7 @@ void im2DRenderIndexedPrimitive(PrimitiveType primType,
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
|
|
||||||
flushCache();
|
flushCache();
|
||||||
glDrawElements(primTypeMap[primType], numIndices, GL_UNSIGNED_SHORT, nil);
|
glDrawElements(primTypeMap[primType], numIndices, GL_UNSIGNED_SHORT, indices);
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
@ -147,30 +141,17 @@ void im2DRenderIndexedPrimitive(PrimitiveType primType,
|
||||||
|
|
||||||
// Im3D
|
// Im3D
|
||||||
|
|
||||||
static AttribDesc im3dattribDesc[3] = {
|
static int32 num3DVertices;
|
||||||
{ 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 void* currentIm3dVertices;
|
static void* currentIm3dVertices;
|
||||||
|
|
||||||
void
|
void
|
||||||
openIm3D(void)
|
openIm3D(void)
|
||||||
{
|
{
|
||||||
glGenBuffers(1, &im3DIbo);
|
|
||||||
glGenBuffers(1, &im3DVbo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
closeIm3D(void)
|
closeIm3D(void)
|
||||||
{
|
{
|
||||||
glDeleteBuffers(1, &im3DIbo);
|
|
||||||
glDeleteBuffers(1, &im3DVbo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -186,21 +167,23 @@ im3DTransform(void *vertices, int32 numVertices, Matrix *world, uint32 flags)
|
||||||
if((flags & im3d::VERTEXUV) == 0)
|
if((flags & im3d::VERTEXUV) == 0)
|
||||||
SetRenderStatePtr(TEXTURERASTER, nil);
|
SetRenderStatePtr(TEXTURERASTER, nil);
|
||||||
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, im3DVbo);
|
currentIm3dVertices = vertices;
|
||||||
glBufferData(GL_ARRAY_BUFFER, numVertices*sizeof(Im3DVertex), vertices, GL_DYNAMIC_DRAW);
|
|
||||||
num3DVertices = numVertices;
|
num3DVertices = numVertices;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
im3DRenderPrimitive(PrimitiveType primType)
|
im3DRenderPrimitive(PrimitiveType primType)
|
||||||
{
|
{
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, im3DVbo);
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||||
|
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
glVertexPointer(3, GL_FLOAT, sizeof(Im3DVertex), (void*)0);
|
glVertexPointer(3, GL_FLOAT, sizeof(Im3DVertex), currentIm3dVertices);
|
||||||
|
|
||||||
glEnableClientState(GL_COLOR_ARRAY);
|
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);
|
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();
|
flushCache();
|
||||||
glDrawArrays(primTypeMap[primType], 0, num3DVertices);
|
glDrawArrays(primTypeMap[primType], 0, num3DVertices);
|
||||||
|
|
@ -213,19 +196,20 @@ im3DRenderPrimitive(PrimitiveType primType)
|
||||||
void
|
void
|
||||||
im3DRenderIndexedPrimitive(PrimitiveType primType, void *indices, int32 numIndices)
|
im3DRenderIndexedPrimitive(PrimitiveType primType, void *indices, int32 numIndices)
|
||||||
{
|
{
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, im3DIbo);
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, numIndices*2, indices, GL_STATIC_DRAW);
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||||
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, im3DVbo);
|
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
glVertexPointer(3, GL_FLOAT, sizeof(Im3DVertex), (void*)0);
|
glVertexPointer(3, GL_FLOAT, sizeof(Im3DVertex), currentIm3dVertices);
|
||||||
|
|
||||||
glEnableClientState(GL_COLOR_ARRAY);
|
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);
|
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();
|
flushCache();
|
||||||
glDrawElements(primTypeMap[primType], numIndices, GL_UNSIGNED_SHORT, nil);
|
glDrawElements(primTypeMap[primType], numIndices, GL_UNSIGNED_SHORT, indices);
|
||||||
|
|
||||||
glDisableClientState(GL_VERTEX_ARRAY);
|
glDisableClientState(GL_VERTEX_ARRAY);
|
||||||
glDisableClientState(GL_COLOR_ARRAY);
|
glDisableClientState(GL_COLOR_ARRAY);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue