瀏覽代碼

update

tags/day-25
Ledda 2 月之前
父節點
當前提交
b5fe21928f
共有 1 個檔案被更改,包括 0 行新增86 行删除
  1. +0
    -86
      src/test.cpp

+ 0
- 86
src/test.cpp 查看文件

@@ -1,86 +0,0 @@
#include "handmade.h"

#define PI32 3.141592653589f

void debug_printf(wchar_t* format, ...) {
size_t bufsize = wcslen(format)*10;
wchar_t *output = (wchar_t*)malloc(bufsize);
va_list list;
va_start(list, format);
vswprintf(output, bufsize, format, list);
OutputDebugStringW(output);
free(output);
}

internal void outputSineSound(GameSoundOutputBuffer *soundBuffer, GameState *state) {
int16 toneVolume = 3000;
int wavePeriod = soundBuffer->samplesPerSecond/state->toneHz;

int16 *sampleOut = soundBuffer->samples;
for (int sampleIndex = 0; sampleIndex < soundBuffer->sampleCount; sampleIndex++) {
int16 sampleValue = (int16)(sin(state->tSine) * (real32)toneVolume);
*sampleOut++ = sampleValue;
*sampleOut++ = sampleValue;
state->tSine += 2.0f * PI32 / (real32)wavePeriod;
}
}

internal void renderWeirdGradient(GameOffscreenBuffer *buffer, int xOffset, int yOffset) {
int bytesPerPixel = 4;
int pitch = buffer->width*bytesPerPixel;
uint8 *row = (uint8 *)buffer->memory;
for (int y = 0; y < buffer->height; y++) {
uint32 *pixel = (uint32*)row;
for (int x = 0; x < buffer->width; x++) {
uint8 blue = (uint8)(x + xOffset);
uint8 green = (uint8)(y + yOffset);
*pixel++ = (green << 8) | blue;
}
row += pitch;
}
}

internal void gameUpdateAndRender(GameMemory *memory, GameOffscreenBuffer *videoBuf, GameInput *input, GameSoundOutputBuffer *soundBuf) {
Assert(sizeof(GameState) <= memory->permanentStorageSize);

GameState *state = (GameState*)memory->permanentStorage;

if (!memory->isInitialised) {
DebugReadFileResult bmpMem = DEBUG_platformReadEntireFile(__FILE__);
if (bmpMem.contents) {
DEBUG_platformWriteEntireFile("c:/source/repos/handmade/src/test.cpp", bmpMem.contentsSize, bmpMem.contents);
DEBUG_platformFreeFileMemory(bmpMem.contents);
}

state->toneHz = 440;
state->tSine = 0;
memory->isInitialised = true;
}

for (int controllerIndex = 0; controllerIndex < ArrayCount(input->controllers); controllerIndex++) {
GameControllerInput *controllerInput = &input->controllers[controllerIndex];
if (controllerInput->isAnalog) {
//state->toneHz = 440 + (int)(128.0f*controllerInput->stickAvgX);
//state->greenOffset -= (int)(4.0f*controllerInput->stickAvgX);
//state->blueOffset += (int)(4.0f*controllerInput->stickAvgY);
} else {
if (controllerInput->stickRight.endedDown) {
state->toneHz = 440 + 128;
state->greenOffset -= 4;
} else if (controllerInput->stickLeft.endedDown) {
state->toneHz = 440 - 128;
state->greenOffset += 4;
} else {
state->toneHz = 440;
}
if (controllerInput->stickUp.endedDown) {
state->blueOffset += 4;
} else if (controllerInput->stickDown.endedDown) {
state->blueOffset -= 4;
}
}
}

outputSineSound(soundBuf, state);
renderWeirdGradient(videoBuf, state->greenOffset, state->blueOffset);
}

Loading…
取消
儲存