Merging with new base, dumping obj files to raw binary and loading
This commit is contained in:
230
kpl_multimedia.h
Normal file
230
kpl_multimedia.h
Normal file
@@ -0,0 +1,230 @@
|
||||
#pragma once
|
||||
|
||||
struct Bitmap {
|
||||
union {
|
||||
U32 *pixels;
|
||||
U64 id;
|
||||
};
|
||||
union {
|
||||
Vec2I size;
|
||||
struct {
|
||||
S32 x, y;
|
||||
};
|
||||
};
|
||||
Vec2 align;
|
||||
};
|
||||
|
||||
enum EventKind {
|
||||
EventKind_None,
|
||||
EventKind_KeyDown,
|
||||
EventKind_KeyUp,
|
||||
EventKind_MouseMove,
|
||||
EventKind_MouseWheel,
|
||||
EventKind_KeyboardText,
|
||||
};
|
||||
|
||||
enum Key {
|
||||
Key_None,
|
||||
Key_Up,
|
||||
Key_Down,
|
||||
Key_Left,
|
||||
Key_Right,
|
||||
Key_Escape,
|
||||
Key_F1,
|
||||
Key_F2,
|
||||
Key_F3,
|
||||
Key_F4,
|
||||
Key_F5,
|
||||
Key_F6,
|
||||
Key_F7,
|
||||
Key_F8,
|
||||
Key_F9,
|
||||
Key_F10,
|
||||
Key_F11,
|
||||
Key_F12,
|
||||
Key_MouseLeft,
|
||||
Key_MouseRight,
|
||||
Key_MouseMiddle,
|
||||
Key_0 = '0',
|
||||
Key_1,
|
||||
Key_2,
|
||||
Key_3,
|
||||
Key_4,
|
||||
Key_5,
|
||||
Key_6,
|
||||
Key_7,
|
||||
Key_8,
|
||||
Key_9 = '9',
|
||||
Key_A = 'a',
|
||||
Key_B,
|
||||
Key_C,
|
||||
Key_D,
|
||||
Key_E,
|
||||
Key_F,
|
||||
Key_G,
|
||||
Key_H,
|
||||
Key_I,
|
||||
Key_J,
|
||||
Key_K,
|
||||
Key_L,
|
||||
Key_M,
|
||||
Key_N,
|
||||
Key_O,
|
||||
Key_P,
|
||||
Key_Q,
|
||||
Key_R,
|
||||
Key_S,
|
||||
Key_T,
|
||||
Key_U,
|
||||
Key_V,
|
||||
Key_W,
|
||||
Key_X,
|
||||
Key_Y,
|
||||
Key_Z = 'z',
|
||||
Key_Count = 256,
|
||||
};
|
||||
|
||||
#define KEY_MAPPING \
|
||||
X(Up, VK_UP) \
|
||||
X(Down, VK_DOWN) \
|
||||
X(Left, VK_LEFT) \
|
||||
X(Right, VK_RIGHT) \
|
||||
X(Escape, VK_ESCAPE) \
|
||||
X(F1, VK_F1) \
|
||||
X(F2, VK_F2) \
|
||||
X(F3, VK_F3) \
|
||||
X(F4, VK_F4) \
|
||||
X(F5, VK_F5) \
|
||||
X(F6, VK_F6) \
|
||||
X(F7, VK_F7) \
|
||||
X(F8, VK_F8) \
|
||||
X(F9, VK_F9) \
|
||||
X(F10, VK_F10) \
|
||||
X(F11, VK_F11) \
|
||||
X(F12, VK_F12) \
|
||||
X(A, 65) \
|
||||
X(B, 66) \
|
||||
X(C, 67) \
|
||||
X(D, 68) \
|
||||
X(E, 69) \
|
||||
X(F, 70) \
|
||||
X(G, 71) \
|
||||
X(H, 72) \
|
||||
X(I, 73) \
|
||||
X(J, 74) \
|
||||
X(K, 75) \
|
||||
X(L, 76) \
|
||||
X(M, 77) \
|
||||
X(N, 78) \
|
||||
X(O, 79) \
|
||||
X(P, 80) \
|
||||
X(Q, 81) \
|
||||
X(R, 82) \
|
||||
X(S, 83) \
|
||||
X(T, 84) \
|
||||
X(U, 85) \
|
||||
X(V, 86) \
|
||||
X(W, 87) \
|
||||
X(X, 88) \
|
||||
X(Y, 89) \
|
||||
X(Z, 90) \
|
||||
X(0, 48) \
|
||||
X(1, 49) \
|
||||
X(2, 50) \
|
||||
X(3, 51) \
|
||||
X(4, 52) \
|
||||
X(5, 53) \
|
||||
X(6, 54) \
|
||||
X(7, 55) \
|
||||
X(8, 56) \
|
||||
X(9, 57)
|
||||
|
||||
struct DigitalKey {
|
||||
bool pressed;
|
||||
bool down;
|
||||
bool released;
|
||||
};
|
||||
|
||||
enum RenderBackend {
|
||||
RenderBackend_Software,
|
||||
RenderBackend_OpenGL1,
|
||||
};
|
||||
|
||||
struct OS {
|
||||
bool quit;
|
||||
bool initialized;
|
||||
Arena *frame_arena;
|
||||
Arena *perm_arena;
|
||||
|
||||
F64 ms_per_frame;
|
||||
bool window_resizable;
|
||||
bool window_was_resized;
|
||||
String window_title;
|
||||
Vec2I window_size;
|
||||
Vec2I window_pos;
|
||||
RenderBackend render_backend;
|
||||
|
||||
Bitmap *screen;
|
||||
Vec2I monitor_size;
|
||||
F32 dpi_scale;
|
||||
|
||||
F64 fps;
|
||||
F64 delta_time;
|
||||
F64 time;
|
||||
U64 frame;
|
||||
F64 update_time;
|
||||
U64 update_begin_cycles;
|
||||
U64 update_end_cycles;
|
||||
F64 frame_start_time;
|
||||
F64 app_start_time;
|
||||
|
||||
B32 cursor_visible;
|
||||
DigitalKey key[Key_Count];
|
||||
F32 mouse_wheel;
|
||||
Vec2I mouse_pos;
|
||||
Vec2I delta_mouse_pos;
|
||||
|
||||
String text;
|
||||
|
||||
char platform[256];
|
||||
struct {
|
||||
char *vendor;
|
||||
char *version;
|
||||
char *renderer;
|
||||
char *extensions;
|
||||
} opengl;
|
||||
};
|
||||
|
||||
struct FontGlyph {
|
||||
F32 xadvance;
|
||||
U32 codepoint;
|
||||
Bitmap bitmap;
|
||||
};
|
||||
|
||||
struct Font {
|
||||
F32 line_advance;
|
||||
F32 ascent;
|
||||
F32 descent;
|
||||
F32 height;
|
||||
FontGlyph *glyphs;
|
||||
U32 glyphs_len;
|
||||
};
|
||||
|
||||
struct Audio;
|
||||
#define AUDIO_CALLBACK(name) void name(Audio *audio, U32* buffer, U32 frames_to_fill)
|
||||
typedef AUDIO_CALLBACK(AudioCallback);
|
||||
|
||||
struct Audio {
|
||||
AudioCallback *callback;
|
||||
B32 initialized;
|
||||
U32 samples_per_second;
|
||||
U32 number_of_channels;
|
||||
|
||||
// NOTE: one frame is 2 samples (left, right) 32 bits if
|
||||
// one sample is equal 16 bit
|
||||
U32 buffer_frame_count;
|
||||
U32 latency_frame_count;
|
||||
S32 bits_per_sample;
|
||||
|
||||
char platform[128];
|
||||
};
|
||||
Reference in New Issue
Block a user