mirror of
https://git.coom.tech/drummyfish/small3dlib.git
synced 2024-11-21 20:39:57 +01:00
Start adding controls to the test
This commit is contained in:
parent
85cadda3b3
commit
534f4aa2b9
2 changed files with 62 additions and 2 deletions
21
s3l.h
21
s3l.h
|
@ -1175,6 +1175,9 @@ void S3L_drawTriangle(S3L_Vec4 point0, S3L_Vec4 point1, S3L_Vec4 point2,
|
|||
const S3L_DrawConfig *config, const S3L_Camera *camera,
|
||||
S3L_Index triangleID)
|
||||
{
|
||||
if (point0.z <= 0 && point1.z <= 0 && point2.z <= 0)
|
||||
return; // completely behind the camera
|
||||
|
||||
if (config->backfaceCulling != S3L_BACKFACE_CULLING_NONE)
|
||||
{
|
||||
int32_t winding = // determines CW or CCW
|
||||
|
@ -1312,11 +1315,29 @@ void S3L_makeWorldMatrix(S3L_Transform3D worldTransform, S3L_Mat4 *m)
|
|||
|
||||
void S3L_makeCameraMatrix(S3L_Transform3D cameraTransform, S3L_Mat4 *m)
|
||||
{
|
||||
/*
|
||||
S3L_makeTranslationMat(
|
||||
-1 * cameraTransform.translation.x,
|
||||
-1 * cameraTransform.translation.y,
|
||||
-1 * cameraTransform.translation.z,
|
||||
m);
|
||||
*/
|
||||
|
||||
S3L_makeTranslationMat(
|
||||
-1 * cameraTransform.translation.x,
|
||||
-1 * cameraTransform.translation.y,
|
||||
-1 * cameraTransform.translation.z,
|
||||
m);
|
||||
|
||||
S3L_Mat4 r;
|
||||
|
||||
S3L_makeRotationMatrix(
|
||||
cameraTransform.rotation.x,
|
||||
cameraTransform.rotation.y,
|
||||
cameraTransform.rotation.z,
|
||||
&r);
|
||||
|
||||
S3L_mat4Xmat4(m,&r);
|
||||
}
|
||||
|
||||
static inline void S3L_zDivide(S3L_Vec4 *vector)
|
||||
|
|
43
testSDL.c
43
testSDL.c
|
@ -34,6 +34,8 @@ const S3L_Unit ver[] = { S3L_CUBE_VERTICES };
|
|||
const S3L_Index tri[] = { S3L_CUBE_TRIANGLES };
|
||||
const S3L_Unit tex_coords[] = { S3L_CUBE_TEXCOORDS };
|
||||
|
||||
int8_t keys[256];
|
||||
|
||||
const uint8_t testTexture[] =
|
||||
{
|
||||
2,2,2,0,0,0,2,2,2,2,0,0,0,2,2,2,
|
||||
|
@ -134,8 +136,8 @@ void draw()
|
|||
modelTransform.rotation.z = f * 0.1;
|
||||
modelTransform.rotation.x = f * 0.3;
|
||||
|
||||
modelTransform.translation.x = sin(f >> 7) * 700;
|
||||
modelTransform.translation.y = sin(f >> 8) * 600;
|
||||
// modelTransform.translation.x = sin(f >> 7) * 700;
|
||||
// modelTransform.translation.y = sin(f >> 8) * 600;
|
||||
|
||||
S3L_drawModelIndexed(ver,tri,12,modelTransform,&camera,&conf);
|
||||
|
||||
|
@ -203,6 +205,9 @@ int main()
|
|||
|
||||
int running = 1;
|
||||
|
||||
for (int i = 0; i < 256; ++i)
|
||||
keys[i] = 0;
|
||||
|
||||
while (running)
|
||||
{
|
||||
draw();
|
||||
|
@ -216,11 +221,45 @@ int main()
|
|||
running = 0;
|
||||
break;
|
||||
|
||||
case SDL_KEYDOWN:
|
||||
keys['a' + event.key.keysym.scancode - SDL_SCANCODE_A] = 1;
|
||||
break;
|
||||
|
||||
case SDL_KEYUP:
|
||||
keys['a' + event.key.keysym.scancode - SDL_SCANCODE_A] = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int step = 10;
|
||||
|
||||
if (keys['w'])
|
||||
camera.transform.translation.z += step;
|
||||
|
||||
if (keys['s'])
|
||||
camera.transform.translation.z -= step;
|
||||
|
||||
if (keys['a'])
|
||||
camera.transform.translation.x -= step;
|
||||
|
||||
if (keys['d'])
|
||||
camera.transform.translation.x += step;
|
||||
|
||||
if (keys['x'])
|
||||
camera.transform.translation.y += step;
|
||||
|
||||
if (keys['c'])
|
||||
camera.transform.translation.y -= step;
|
||||
|
||||
if (keys['q'])
|
||||
camera.transform.rotation.y -= 1;
|
||||
|
||||
if (keys['e'])
|
||||
camera.transform.rotation.y += 1;
|
||||
|
||||
SDL_RenderClear(renderer);
|
||||
SDL_RenderCopy(renderer,texture,NULL,NULL);
|
||||
SDL_RenderPresent(renderer);
|
||||
|
|
Loading…
Reference in a new issue