mirror of
https://git.coom.tech/drummyfish/small3dlib.git
synced 2024-11-23 20:59:58 +01:00
Update model viewer
This commit is contained in:
parent
d75326c9da
commit
0834485f43
1 changed files with 26 additions and 16 deletions
|
@ -41,6 +41,13 @@
|
||||||
#define TEXTURE_W 128
|
#define TEXTURE_W 128
|
||||||
#define TEXTURE_H 128
|
#define TEXTURE_H 128
|
||||||
|
|
||||||
|
#define MODE_TEXTUERED 0
|
||||||
|
#define MODE_SINGLE_COLOR 1
|
||||||
|
#define MODE_NORMAL_SMOOTH 2
|
||||||
|
#define MODE_NORMAL_SHARP 3
|
||||||
|
#define MODE_BARYCENTRIC 4
|
||||||
|
#define MODE_TRIANGLE_INDEX 5
|
||||||
|
|
||||||
void printHelp()
|
void printHelp()
|
||||||
{
|
{
|
||||||
printf("Modelviewer: example program for small3dlib.\n\n");
|
printf("Modelviewer: example program for small3dlib.\n\n");
|
||||||
|
@ -162,7 +169,7 @@ void drawPixel(S3L_PixelInfo *p)
|
||||||
{
|
{
|
||||||
int16_t index;
|
int16_t index;
|
||||||
|
|
||||||
if (mode == 0)
|
if (mode == MODE_TEXTUERED)
|
||||||
{
|
{
|
||||||
index = p->triangleIndex * 3;
|
index = p->triangleIndex * 3;
|
||||||
|
|
||||||
|
@ -185,7 +192,7 @@ void drawPixel(S3L_PixelInfo *p)
|
||||||
uv2[0] = uvs[index];
|
uv2[0] = uvs[index];
|
||||||
uv2[1] = uvs[index + 1];
|
uv2[1] = uvs[index + 1];
|
||||||
}
|
}
|
||||||
else if (mode == 3)
|
else if (mode == MODE_NORMAL_SHARP)
|
||||||
{
|
{
|
||||||
index = p->triangleIndex * 3;
|
index = p->triangleIndex * 3;
|
||||||
|
|
||||||
|
@ -222,7 +229,7 @@ void drawPixel(S3L_PixelInfo *p)
|
||||||
nt.z = S3L_clamp(128 + nt.z / 4,0,255);
|
nt.z = S3L_clamp(128 + nt.z / 4,0,255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (light || mode == 2)
|
if (light || mode == MODE_NORMAL_SMOOTH)
|
||||||
{
|
{
|
||||||
index = scene.models[p->modelIndex].triangles[p->triangleIndex * 3] * 3;
|
index = scene.models[p->modelIndex].triangles[p->triangleIndex * 3] * 3;
|
||||||
|
|
||||||
|
@ -262,13 +269,16 @@ void drawPixel(S3L_PixelInfo *p)
|
||||||
p->barycentric[2] != 0)
|
p->barycentric[2] != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
uint8_t r,g,b;
|
uint8_t
|
||||||
|
r = 0,
|
||||||
|
g = 0,
|
||||||
|
b = 0;
|
||||||
|
|
||||||
int8_t transparent = 0;
|
int8_t transparent = 0;
|
||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case 0: // textured mode
|
case MODE_TEXTUERED:
|
||||||
{
|
{
|
||||||
S3L_Unit uv[2];
|
S3L_Unit uv[2];
|
||||||
|
|
||||||
|
@ -283,7 +293,7 @@ void drawPixel(S3L_PixelInfo *p)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 1: // single color mode
|
case MODE_SINGLE_COLOR:
|
||||||
{
|
{
|
||||||
r = 128;
|
r = 128;
|
||||||
g = 128;
|
g = 128;
|
||||||
|
@ -292,7 +302,7 @@ void drawPixel(S3L_PixelInfo *p)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 2: // smooth normal mode
|
case MODE_NORMAL_SMOOTH:
|
||||||
{
|
{
|
||||||
S3L_Vec4 n;
|
S3L_Vec4 n;
|
||||||
|
|
||||||
|
@ -309,7 +319,7 @@ void drawPixel(S3L_PixelInfo *p)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 3: // non-smooth normal mode
|
case MODE_NORMAL_SHARP:
|
||||||
{
|
{
|
||||||
r = nt.x;
|
r = nt.x;
|
||||||
g = nt.y;
|
g = nt.y;
|
||||||
|
@ -317,7 +327,7 @@ void drawPixel(S3L_PixelInfo *p)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 4: // barycentric mode
|
case MODE_BARYCENTRIC:
|
||||||
{
|
{
|
||||||
r = p->barycentric[0] >> 1;
|
r = p->barycentric[0] >> 1;
|
||||||
g = p->barycentric[1] >> 1;
|
g = p->barycentric[1] >> 1;
|
||||||
|
@ -325,7 +335,7 @@ void drawPixel(S3L_PixelInfo *p)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 5: // triangle index mode
|
case MODE_TRIANGLE_INDEX:
|
||||||
{
|
{
|
||||||
r = S3L_min(p->triangleIndex,255);
|
r = S3L_min(p->triangleIndex,255);
|
||||||
g = r;
|
g = r;
|
||||||
|
@ -548,17 +558,17 @@ int main()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state[SDL_SCANCODE_KP_0])
|
if (state[SDL_SCANCODE_KP_0])
|
||||||
mode = 0;
|
mode = MODE_TEXTUERED;
|
||||||
else if (state[SDL_SCANCODE_KP_1])
|
else if (state[SDL_SCANCODE_KP_1])
|
||||||
mode = 1;
|
mode = MODE_SINGLE_COLOR;
|
||||||
else if (state[SDL_SCANCODE_KP_2])
|
else if (state[SDL_SCANCODE_KP_2])
|
||||||
mode = 2;
|
mode = MODE_NORMAL_SMOOTH;
|
||||||
else if (state[SDL_SCANCODE_KP_3])
|
else if (state[SDL_SCANCODE_KP_3])
|
||||||
mode = 3;
|
mode = MODE_NORMAL_SHARP;
|
||||||
else if (state[SDL_SCANCODE_KP_4])
|
else if (state[SDL_SCANCODE_KP_4])
|
||||||
mode = 4;
|
mode = MODE_BARYCENTRIC;
|
||||||
else if (state[SDL_SCANCODE_KP_5])
|
else if (state[SDL_SCANCODE_KP_5])
|
||||||
mode = 5;
|
mode = MODE_TRIANGLE_INDEX;
|
||||||
|
|
||||||
if (modelIndex == 2)
|
if (modelIndex == 2)
|
||||||
animate(((double) clock()) / CLOCKS_PER_SEC);
|
animate(((double) clock()) / CLOCKS_PER_SEC);
|
||||||
|
|
Loading…
Reference in a new issue