port from perforce
This commit is contained in:
164
ev14-4k/project/main_rel.cpp
Normal file
164
ev14-4k/project/main_rel.cpp
Normal file
@@ -0,0 +1,164 @@
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_EXTRA_LEAN
|
||||
#include "synth.h"
|
||||
#include <GL/gl.h>
|
||||
#include "glext.h"
|
||||
#include "mark_small.h"
|
||||
|
||||
#ifndef SCREENWIDTH
|
||||
#define SCREENWIDTH 1280
|
||||
#endif
|
||||
|
||||
#ifndef SCREENHEIGHT
|
||||
#define SCREENHEIGHT 720
|
||||
#endif
|
||||
|
||||
#ifndef ASPECTOFFSET
|
||||
#define ASPECTOFFSET 0.375f
|
||||
#endif
|
||||
|
||||
#define WINDOWED
|
||||
|
||||
#pragma data_seg(".Shader0")
|
||||
#include "mark_small.h"
|
||||
|
||||
#pragma data_seg(".pfd")
|
||||
static const PIXELFORMATDESCRIPTOR pfd = {
|
||||
0, 1, PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 8
|
||||
};
|
||||
|
||||
#pragma data_seg(".dms")
|
||||
static DEVMODE dmScreenSettings = {
|
||||
"", 0, 0, sizeof(dmScreenSettings), 0, DM_PELSWIDTH | DM_PELSHEIGHT,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, SCREENWIDTH, SCREENHEIGHT
|
||||
};
|
||||
|
||||
#pragma data_seg(".fltused")
|
||||
int _fltused = 1;
|
||||
|
||||
#pragma bss_seg(".mainbss")
|
||||
static int gCurScene = 0;
|
||||
static int gCurSceneStart = 0;
|
||||
static float lf_Time = 0.0f;
|
||||
static unsigned int shaders[3];
|
||||
|
||||
#pragma data_seg(".g_SceneLength")
|
||||
int g_SceneLength[] =
|
||||
{
|
||||
16, 16,
|
||||
16, 8, 8, 8, 8, 16,
|
||||
8, 8, 16, 16,
|
||||
16, 16, 16, 16,
|
||||
0x80000000
|
||||
};
|
||||
#pragma data_seg(".g_SceneShader")
|
||||
int g_SceneShader[] =
|
||||
{
|
||||
0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 1, 1, 1,
|
||||
2, 2, 2, 2
|
||||
};
|
||||
|
||||
|
||||
#pragma data_seg(".glCreateShaderProgramEXT")
|
||||
static const char* sglCreateShaderProgramEXT = "glCreateShaderProgramEXT";
|
||||
|
||||
#pragma data_seg(".glUseProgram")
|
||||
static const char* sglUseProgram = "glUseProgram";
|
||||
|
||||
#pragma data_seg(".glUniform4f")
|
||||
static const char* sglUniform4f = "glUniform4f";
|
||||
|
||||
#define shaderCountOffset 12
|
||||
|
||||
#ifdef _DEBUG
|
||||
void _printProgramInfoLog(GLhandleARB ah_Program)
|
||||
{
|
||||
int li_InfologLength = 0;
|
||||
int li_CharsWritten = 0;
|
||||
|
||||
((PFNGLGETPROGRAMIVPROC)wglGetProcAddress("glGetProgramiv"))(ah_Program, GL_INFO_LOG_LENGTH, &li_InfologLength);
|
||||
|
||||
if (li_InfologLength > 0)
|
||||
{
|
||||
static char ls_InfoLog[65536];
|
||||
|
||||
((PFNGLGETPROGRAMINFOLOGPROC)wglGetProcAddress("glGetProgramInfoLog"))(ah_Program, li_InfologLength, &li_CharsWritten, ls_InfoLog);
|
||||
OutputDebugString(ls_InfoLog);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#define _printProgramInfoLog(foo)
|
||||
#endif
|
||||
|
||||
#define ATOM_EDIT 0xC018
|
||||
#define ATOM_STATIC 0xC019
|
||||
|
||||
#include "..\..\hgplus\obliterator\syncprototype\syncprototype\timeline.h"
|
||||
|
||||
#pragma code_seg(".main")
|
||||
void _cdecl main()
|
||||
{
|
||||
#ifndef WINDOWED
|
||||
ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);
|
||||
HDC hDC = GetDC(CreateWindowExA(0, (LPCSTR)ATOM_STATIC, 0, WS_POPUP | WS_VISIBLE | WS_MAXIMIZE, 0, 0, 0, 0, 0, 0, 0, 0));
|
||||
#else
|
||||
HDC hDC = GetDC(CreateWindowExA(0, (LPCSTR)ATOM_EDIT, 0, WS_EX_APPWINDOW | WS_VISIBLE | WS_SYSMENU, 0, 0, SCREENWIDTH + 16, SCREENHEIGHT + 39, 0, 0, 0, 0));
|
||||
#endif
|
||||
|
||||
SetPixelFormat(hDC, ChoosePixelFormat(hDC, &pfd), &pfd);
|
||||
wglMakeCurrent(hDC, wglCreateContext(hDC));
|
||||
|
||||
//shaders[0] =
|
||||
((PFNGLCREATESHADERPROGRAMEXTPROC)wglGetProcAddress(sglCreateShaderProgramEXT))(GL_FRAGMENT_SHADER, mark_fs_0);
|
||||
mark_fs_0[shaderCountOffset]++;
|
||||
_printProgramInfoLog(1);
|
||||
//shaders[1] =
|
||||
((PFNGLCREATESHADERPROGRAMEXTPROC)wglGetProcAddress(sglCreateShaderProgramEXT))(GL_FRAGMENT_SHADER, mark_fs_0);
|
||||
mark_fs_0[shaderCountOffset]++;
|
||||
_printProgramInfoLog(2);
|
||||
//shaders[2] =
|
||||
((PFNGLCREATESHADERPROGRAMEXTPROC)wglGetProcAddress(sglCreateShaderProgramEXT))(GL_FRAGMENT_SHADER, mark_fs_0);
|
||||
mark_fs_0[shaderCountOffset]++;
|
||||
_printProgramInfoLog(3);
|
||||
|
||||
ShowCursor(FALSE);
|
||||
CreateTimeline();
|
||||
|
||||
InitSound();
|
||||
|
||||
do
|
||||
{
|
||||
UpdateTimeline();
|
||||
get_Sample();
|
||||
int Sample = MMTime.u.sample - gCurSceneStart;
|
||||
int SceneEnd = g_SceneLength[gCurScene] * SAMPLES_PER_TICK * 8;//samples per tick
|
||||
lf_Time = (float)Sample / (float)SceneEnd;
|
||||
|
||||
//auto program = shaders[g_SceneShader[gCurScene]];
|
||||
auto program = 1 + g_SceneShader[gCurScene];
|
||||
((PFNGLUSEPROGRAMPROC)wglGetProcAddress(sglUseProgram))(program);
|
||||
((PFNGLUNIFORM4FPROC)wglGetProcAddress(sglUniform4f))(0, gCurScene, lf_Time, SCREENHEIGHT, ASPECTOFFSET);
|
||||
|
||||
glRecti(-1, -1, 1, 1);
|
||||
|
||||
SwapBuffers(hDC);
|
||||
|
||||
if (Sample > SceneEnd)
|
||||
{
|
||||
gCurSceneStart += SceneEnd;
|
||||
gCurScene++;
|
||||
}
|
||||
|
||||
MSG msg;
|
||||
while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
||||
{
|
||||
::TranslateMessage(&msg);
|
||||
::DispatchMessage(&msg);
|
||||
}
|
||||
} while (MMTime.u.sample < MAX_SAMPLES && !GetAsyncKeyState(VK_ESCAPE));
|
||||
|
||||
ExitProcess(0);
|
||||
}
|
||||
Reference in New Issue
Block a user