feat(clusterApp): initial version run in Ubuntu.

change fb to DRM
This commit is contained in:
2026-04-17 18:49:03 +08:00
parent 2774b26f8b
commit 0108dbb67f
2827 changed files with 859 additions and 19860 deletions

View File

@@ -0,0 +1,218 @@
#ifndef RES_MODEL_H_INCLUDED
#define RES_MODEL_H_INCLUDED
#include <BaseTypes.h>
enum
{
Vbo_Unload = 0,
Vbo_Loaded,
Vbo_BufGen,
Vbo_LoadFail,
};
#define VBO_HDR_NONE 0
#define VBO_HDR_NORML 1
#define VBO_HDR_TEXC 2
#define VBO_HDR_NOR_TXC (VBO_HDR_NORML|VBO_HDR_TEXC)
static const char *vboFilePath[] =
{
// "./Res/model3d/CarTestPrd.vbo",
// "./Res/model3d/CarTestPrd.vbo",
// "./Res/model3d/CarTestPrd.vbo",
// "./Res/model3d/CarLargePrd.vbo",
// "./Res/model3d/CarMediumPrd.vbo",
// "./Res/model3d/CarSmallPrd.vbo",
// "./Res/model3d/TexCarLarge_rd0.vbo",
// "./Res/model3d/TexCarMedium.vbo",
// "./Res/model3d/TexCarSmall.vbo",
"./Res/model3d/truck_1.vbo",
"./Res/model3d/car_1.vbo",//car_1
"./Res/model3d/bicycle_1.vbo",
};
enum
{
VBO_CarLarge = 0,
VBO_CarMedium,
VBO_CarSmall,
VBO_NUM,
};
static GLfloat vboMaterialGray[] =
{
0.3f, 0.3f, 0.3f, 1.0f,
0.3f, 0.3f, 0.3f, 1.0f,
0.3f, 0.3f, 0.3f, 1.0f,
0.0f, 5.0f, 40.0f, 1.0f,
};
static GLfloat vboMaterialRed[] =
{
0.5f, 0.25f, 0.25f, 1.0f,
0.4f, 0.3f, 0.3f, 1.0f,
0.35f, 0.3f, 0.3f, 1.0f,
0.0f, 5.0f, 40.0f, 1.0f,
};
static GLfloat vboMaterialBlue[] =
{
0.1f, 0.2f, 0.45f, 1.0f,
0.1f, 0.2f, 0.45f, 1.0f,
0.1f, 0.2f, 0.45f, 1.0f,
0.0f, 5.0f, 40.0f, 1.0f,
};
static UInt08 vboStatus[VBO_NUM];
static Model3DVbo vboModel[VBO_NUM];
static const GLenum vboIdxType[5] =
{
GL_UNSIGNED_BYTE, /*-0-*/
GL_UNSIGNED_BYTE, /* 1 */
GL_UNSIGNED_SHORT, /* 2 */
GL_UNSIGNED_SHORT, /*-3-*/
GL_UNSIGNED_INT, /* 4 */
};
static void Once_InitVboModelInfo()
{
static Bool flag = INS_FALSE;
if(flag == INS_TRUE)return;
flag = INS_TRUE;
Int32 i;
for(i = 0; i < VBO_NUM; i++)
{
vboModel[i].hdr = VBO_NOT_NOR_AND_TXC;
vboModel[i].idx_type = 1;
vboModel[i].idx_num = 0;
vboModel[i].face_num = 0;
vboModel[i].vtxs = NULL;
vboModel[i].txcs = NULL;
vboModel[i].nors = NULL;
vboModel[i].idx = NULL;
vboModel[i].buf[0] = INS_INVALID_RES_ID;
vboModel[i].buf[1] = INS_INVALID_RES_ID;
vboModel[i].buf[2] = INS_INVALID_RES_ID;
vboModel[i].buf[3] = INS_INVALID_RES_ID;
vboStatus[i] = Vbo_Unload;
}
}
static void Once_LoadVboModelData(Int32 id)
{
if(id < 0 || id >= VBO_NUM || vboStatus[id] != Vbo_Unload)return;
PrintCurrentTimeMs();
printf("loading vbo file[%s]\n", vboFilePath[id]);
if(LoadVbo(&vboModel[id], vboFilePath[id]) != INS_TRUE)
{
printf("load vbo file fail[%s]\n", vboFilePath[id]);
vboStatus[id] = Vbo_LoadFail;
return;
}
vboStatus[id] = Vbo_Loaded;
PrintCurrentTimeMs();
}
enum{VBO_BUF_VTX = 0, VBO_BUF_TXC, VBO_BUF_NOR, VBO_BUF_IDX};
static void Once_GenVboBuffer(Int32 id)
{
if(vboModel[id].vtxs == NULL || (vboModel[id].txcs == NULL && vboModel[id].nors == NULL))return;
vboStatus[id] = Vbo_BufGen;
PrintCurrentTimeMs();
// printf("generating vbo buffer[%s]\n", vboFilePath[id]);
// printf("Once_GenVboBuffer GL_ERR_CODE[0x%x]\n", glGetError());
glGenBuffers(4, vboModel[id].buf);
// printf("glGenBuffers GL_ERR_CODE[0x%x]\n", glGetError());
glBindBuffer(GL_ARRAY_BUFFER, vboModel[id].buf[VBO_BUF_VTX]);
// printf("glBindBuffer vtx GL_ERR_CODE[0x%x]\n", glGetError());
glBufferData(GL_ARRAY_BUFFER, vboModel[id].idx_num*3*sizeof(Flt32), vboModel[id].vtxs, GL_STATIC_DRAW);
// printf("glBufferData vtx GL_ERR_CODE[0x%x]\n", glGetError());
if((vboModel[id].hdr & VBO_HAVA_TEXTCOORDS) && vboModel[id].txcs != NULL)
{
glBindBuffer(GL_ARRAY_BUFFER, vboModel[id].buf[VBO_BUF_TXC]);
// printf("glBindBuffer txc GL_ERR_CODE[0x%x]\n", glGetError());
glBufferData(GL_ARRAY_BUFFER, vboModel[id].idx_num*2*sizeof(Flt32), vboModel[id].txcs, GL_STATIC_DRAW);
// printf("glBufferData txc GL_ERR_CODE[0x%x]\n", glGetError());
}
if((vboModel[id].hdr & VBO_HAVA_NORMALS) && vboModel[id].nors != NULL)
{
glBindBuffer(GL_ARRAY_BUFFER, vboModel[id].buf[VBO_BUF_NOR]);
// printf("glBindBuffer nor GL_ERR_CODE[0x%x]\n", glGetError());
glBufferData(GL_ARRAY_BUFFER, vboModel[id].idx_num*3*sizeof(Flt32), vboModel[id].nors, GL_STATIC_DRAW);
// printf("glBufferData nor GL_ERR_CODE[0x%x]\n", glGetError());
}
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vboModel[id].buf[VBO_BUF_IDX]);
// printf("glBindBuffer idx GL_ERR_CODE[0x%x]\n", glGetError());
switch(vboModel[id].idx_type)
{
case 4:
// *idx_type = GL_UNSIGNED_INT;
glBufferData(GL_ELEMENT_ARRAY_BUFFER, vboModel[id].face_num*3*sizeof(UInt32), vboModel[id].idx, GL_STATIC_DRAW);
// printf("glBufferData idx 4 GL_ERR_CODE[0x%x]\n", glGetError());
break;
case 2:
// *idx_type = GL_UNSIGNED_SHORT;
glBufferData(GL_ELEMENT_ARRAY_BUFFER, vboModel[id].face_num*3*sizeof(UInt16), vboModel[id].idx, GL_STATIC_DRAW);
// printf("glBufferData idx 2 GL_ERR_CODE[0x%x]\n", glGetError());
break;
default:
// *idx_type = GL_UNSIGNED_BYTE;
glBufferData(GL_ELEMENT_ARRAY_BUFFER, vboModel[id].face_num*3*sizeof(UInt08), vboModel[id].idx, GL_STATIC_DRAW);
// printf("glBufferData idx 1 GL_ERR_CODE[0x%x]\n", glGetError());
break;
}
PrintCurrentTimeMs();
}
static void DestroyVboResources()
{
Int32 i;
for(i = 0; i < VBO_NUM; i++)
{
if(vboModel[i].vtxs != NULL)
{
free(vboModel[i].vtxs);
}
if(vboModel[i].txcs != NULL)
{
free(vboModel[i].txcs);
}
if(vboModel[i].nors != NULL)
{
free(vboModel[i].nors);
}
if(vboModel[i].idx != NULL)
{
free(vboModel[i].idx);
}
if(vboModel[i].buf[VBO_BUF_VTX] != INS_INVALID_RES_ID)
{
glDeleteBuffers(1, &(vboModel[i].buf[VBO_BUF_VTX]));
vboModel[i].buf[VBO_BUF_VTX] = INS_INVALID_RES_ID;
}
if(vboModel[i].buf[VBO_BUF_TXC] != INS_INVALID_RES_ID)
{
glDeleteBuffers(1, &(vboModel[i].buf[VBO_BUF_TXC]));
vboModel[i].buf[VBO_BUF_TXC] = INS_INVALID_RES_ID;
}
if(vboModel[i].buf[VBO_BUF_NOR] != INS_INVALID_RES_ID)
{
glDeleteBuffers(1, &(vboModel[i].buf[VBO_BUF_NOR]));
vboModel[i].buf[VBO_BUF_NOR] = INS_INVALID_RES_ID;
}
if(vboModel[i].buf[VBO_BUF_IDX] != INS_INVALID_RES_ID)
{
glDeleteBuffers(1, &(vboModel[i].buf[VBO_BUF_IDX]));
vboModel[i].buf[VBO_BUF_IDX] = INS_INVALID_RES_ID;
}
vboStatus[i] = Vbo_Unload;
}
}
#endif // RES_MODEL_H_INCLUDED