summaryrefslogtreecommitdiffstats
path: root/headtrack_stereo_demo/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'headtrack_stereo_demo/src/main.cpp')
-rw-r--r--headtrack_stereo_demo/src/main.cpp97
1 files changed, 84 insertions, 13 deletions
diff --git a/headtrack_stereo_demo/src/main.cpp b/headtrack_stereo_demo/src/main.cpp
index f7f037a..9bd8d23 100644
--- a/headtrack_stereo_demo/src/main.cpp
+++ b/headtrack_stereo_demo/src/main.cpp
@@ -16,18 +16,29 @@ GameState_t g_GameState;
void InitGL(void)
{
- GLfloat l_f4LightPos[] = {0.0, 1.0, 1.0, 0.0},
+ GLfloat l_f4Light0Diffuse[] = {0.7, 0.7, 0.7, 1.0},
+ l_f4LightPos[] = {1.0, 1.0, 1.0, 0.0},
l_f4GlobalAmbient[] = {0.3, 0.3, 0.3, 1.0};
//init OpenGL
glLightfv(GL_LIGHT0, GL_POSITION, l_f4LightPos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT_AND_DIFFUSE, l_f4Light0Diffuse);
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 0);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, l_f4GlobalAmbient);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
- glEnable(GL_COLOR_MATERIAL);
- glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
+ //glEnable(GL_COLOR_MATERIAL);
+ //glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
+ //glMateriali(GL_FRONT, GL_SHININESS, 128);
+
+ /*glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+ glMateriali(GL_FRONT_AND_BACK, GL_SHININESS, 128);
+ float f4Em[] = {0.0, 0.0, 0.0, 1.0},
+ f4Spec[] = {1.0, 1.0, 1.0, 1.0} ;
+ glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, f4Em);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, f4Spec);
+ glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 128);*/
glClearColor(1.0, 1.0, 1.0, 1.0);
glClearDepth(1000.0);
@@ -44,17 +55,19 @@ bool InitWiiMotes()
g_GameState.m_pTrackingWiimote->ChangedCallback = NULL; //no callbacks, we just poll...
g_GameState.m_pTrackingWiimote->CallbackTriggerFlags = NO_CHANGE;
- /*printf("connecting:\n");
- while(!g_Wiimote.Connect(wiimote::FIRST_AVAILABLE))
+ printf("connecting:\n");
+ int retries = 10;
+ while(!g_GameState.m_pTrackingWiimote->Connect(wiimote::FIRST_AVAILABLE) && retries > 10)
{
- Sleep(1000);
+ Sleep(100);
printf(".");
+ retries--;
}
- printf("connected\n");*/
-
- if (g_GameState.m_pTrackingWiimote->Connect(wiimote::FIRST_AVAILABLE))
+ if (g_GameState.m_pTrackingWiimote->IsConnected())
{
+ printf("connected\n");
+
g_GameState.m_pTrackingWiimote->SetLEDs(0x0f);
g_GameState.m_pTrackingWiimote->SetReportType(wiimote::IN_BUTTONS_ACCEL_IR_EXT); // IR dots
@@ -70,8 +83,43 @@ bool InitWiiMotes()
}
}
+void printShaderInfoLog(GLuint obj)
+{
+ int infologLength = 0;
+ int charsWritten = 0;
+ char *infoLog;
+
+ glGetShaderiv(obj, GL_INFO_LOG_LENGTH,&infologLength);
+
+ if (infologLength > 0)
+ {
+ infoLog = (char *)malloc(infologLength);
+ glGetShaderInfoLog(obj, infologLength, &charsWritten, infoLog);
+ printf("%s\n",infoLog);
+ free(infoLog);
+ }
+}
+
+void printProgramInfoLog(GLuint obj)
+{
+ int infologLength = 0;
+ int charsWritten = 0;
+ char *infoLog;
+
+ glGetProgramiv(obj, GL_INFO_LOG_LENGTH,&infologLength);
+
+ if (infologLength > 0)
+ {
+ infoLog = (char *)malloc(infologLength);
+ glGetProgramInfoLog(obj, infologLength, &charsWritten, infoLog);
+ printf("%s\n",infoLog);
+ free(infoLog);
+ }
+}
+
bool LoadGreyScaleShader()
{
+ GLint l_bStatus;
char *vs_text = NULL,*fs_text = NULL;
GLuint vs = glCreateShader(GL_VERTEX_SHADER),
fs = glCreateShader(GL_FRAGMENT_SHADER);
@@ -95,13 +143,32 @@ bool LoadGreyScaleShader()
free(fs_text);
glCompileShader(vs);
+ printShaderInfoLog(vs);
+ glGetShaderiv(vs, GL_COMPILE_STATUS, &l_bStatus);
+ if (l_bStatus == GL_FALSE)
+ {
+ return false;
+ }
+
glCompileShader(fs);
+ printShaderInfoLog(fs);
+ glGetShaderiv(fs, GL_COMPILE_STATUS, &l_bStatus);
+ if (l_bStatus == GL_FALSE)
+ {
+ return false;
+ }
g_GameState.m_GreyScaleShaderProgram = glCreateProgram();
glAttachShader(g_GameState.m_GreyScaleShaderProgram,fs);
glAttachShader(g_GameState.m_GreyScaleShaderProgram,vs);
glLinkProgram(g_GameState.m_GreyScaleShaderProgram);
+ printProgramInfoLog(g_GameState.m_GreyScaleShaderProgram);
+ glGetProgramiv(g_GameState.m_GreyScaleShaderProgram, GL_LINK_STATUS, &l_bStatus);
+ if (l_bStatus == GL_FALSE)
+ {
+ return false;
+ }
g_GameState.m_GSConvScaleLoc = glGetUniformLocation(g_GameState.m_GreyScaleShaderProgram, "g_ConversionWeights");
@@ -152,15 +219,15 @@ int main(int argc, char **argv)
g_GameState.m_FrustumParms.m_dCameraYCenter = 768.0/2.0;
g_GameState.m_FrustumParms.m_dYAngleCorrection = 0.0; //to be initialised correctly
g_GameState.m_FrustumParms.m_dScreenHeightWorld = 20.0;
- /*g_GameState.m_FrustumParms.m_dCameraYOffset = 130.0;
+ g_GameState.m_FrustumParms.m_dCameraYOffset = 130.0;
g_GameState.m_FrustumParms.m_dScreenHeightMM = 210.0;
- g_GameState.m_FrustumParms.m_dScreenAspect = 4.0/3.0;*/
+ g_GameState.m_FrustumParms.m_dScreenAspect = 4.0/3.0;
g_GameState.m_GSConvScale[0] = 0.299;
g_GameState.m_GSConvScale[1] = 0.587;
g_GameState.m_GSConvScale[2] = 0.114;
- g_GameState.m_FrustumParms.m_dCameraYOffset = 205.0;
+ /*g_GameState.m_FrustumParms.m_dCameraYOffset = 205.0;
g_GameState.m_FrustumParms.m_dScreenHeightMM = 320.0;
- g_GameState.m_FrustumParms.m_dScreenAspect = 16.0/10.0;
+ g_GameState.m_FrustumParms.m_dScreenAspect = 16.0/10.0;*/
g_GameState.m_bHeadTrackingEnabled = false;
g_GameState.m_bStereoEnabled = false;
@@ -169,6 +236,10 @@ int main(int argc, char **argv)
glutFullScreen();
+
+ //glUseProgram(g_GameState.m_GreyScaleShaderProgram);
+
+
//action!!
glutMainLoop();