changed how threading might work in the readme
This commit is contained in:
parent
05d38d7b69
commit
5c3634a6fd
@ -93,3 +93,7 @@ A lot of things should be hidden to the player, the player shouldn't know everyt
|
||||
-Henry Petroski
|
||||
```
|
||||
|
||||
## Threading :
|
||||
|
||||
Each step should have if possible an array of data, that can then be sliced and dispatched to multiple thread that do the same action (ex physique that have a thread for each local coordinate or for each entity and resolve collision later or before). maybe i could also make this work for spliting for each AI it's pathfinding into 2 but maybe not usefull??
|
||||
|
||||
|
||||
@ -12,8 +12,12 @@
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
#include <pthread.h>
|
||||
|
||||
|
||||
#include <raylib.h>
|
||||
#include <raymath.h>
|
||||
#include <raygui.h>
|
||||
|
||||
#include <extern/toml.h>
|
||||
#include <extern/FastNoiseLite.h>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
#include <engine.h>
|
||||
#include <pthread.h>
|
||||
|
||||
/*
|
||||
Time Manipulation
|
||||
@ -45,7 +44,9 @@ void DataInspector() {
|
||||
|
||||
/*
|
||||
Debug Console
|
||||
|
||||
INFO: may not be needed to thread this as input may only be available in main thread
|
||||
*/
|
||||
void DebugConsol() {
|
||||
__thread static char user_input[256];//need to be allocated for thread safety
|
||||
void DebugConsole() {
|
||||
char user_input[256];
|
||||
}
|
||||
|
||||
@ -44,20 +44,18 @@ void UpdateInput() {
|
||||
}
|
||||
}
|
||||
|
||||
//may be able to dispatch it
|
||||
void GameLoop(const double tick_time) {
|
||||
static double time = 0;
|
||||
__thread static double time = 0;
|
||||
|
||||
time += GetFrameTime();
|
||||
if (time >= tick_time) {
|
||||
// interaction
|
||||
// simulation
|
||||
//dispatch all thread then
|
||||
//wait all thread end
|
||||
time = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main(void) {
|
||||
double tick_time = 0.4;
|
||||
SetTraceLogLevel(LOG_ALL);
|
||||
@ -66,8 +64,8 @@ int main(void) {
|
||||
SetExitKey(KEY_NULL);
|
||||
while (!WindowShouldClose()) {
|
||||
UpdateInput();
|
||||
//DispatchWorker
|
||||
ComputeIntent();
|
||||
//DispatchWorker
|
||||
GameLoop(tick_time);
|
||||
//joinWorker
|
||||
Rendering();
|
||||
|
||||
@ -95,7 +95,7 @@ void LoadPipeline() {
|
||||
rlEnableDepthTest();
|
||||
rlEnableBackfaceCulling();
|
||||
TraceLog(LOG_INFO, "Render Pipeline Built");
|
||||
SetTargetFPS(240);//may change
|
||||
SetTargetFPS(120);//may change
|
||||
}
|
||||
|
||||
void UnloadPipeline() {
|
||||
@ -127,17 +127,15 @@ void Rendering() {
|
||||
//Light Pass and forward pass;
|
||||
//I should build a shader that take every light in the scene and make a 3D heightmap of lighting then compute it once for all static light allowing to cheat computing everylight
|
||||
//light is computed into a scalar field
|
||||
BeginShaderMode(ctx.shader.filter);
|
||||
|
||||
//Light Pass
|
||||
|
||||
//Screen Filter Pass
|
||||
BeginShaderMode(ctx.shader.filter);//may be good to have this disabled for accessibility
|
||||
//DrawTextureRec();
|
||||
EndShaderMode();
|
||||
|
||||
//render ui
|
||||
//if (ctx.hud_on) {
|
||||
// UserInterface();
|
||||
//}
|
||||
//if (ctx.debug_on) {
|
||||
// DebugInterface();
|
||||
//}
|
||||
EndDrawing();
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user