summaryrefslogtreecommitdiffstats
path: root/headtrack_stereo_demo/src
diff options
context:
space:
mode:
Diffstat (limited to 'headtrack_stereo_demo/src')
-rw-r--r--headtrack_stereo_demo/src/main.cpp97
-rw-r--r--headtrack_stereo_demo/src/scenerenderer.cpp42
2 files changed, 111 insertions, 28 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();
diff --git a/headtrack_stereo_demo/src/scenerenderer.cpp b/headtrack_stereo_demo/src/scenerenderer.cpp
index 2fc7042..a85b5a1 100644
--- a/headtrack_stereo_demo/src/scenerenderer.cpp
+++ b/headtrack_stereo_demo/src/scenerenderer.cpp
@@ -6,6 +6,18 @@
extern GameState_t g_GameState;
+void setColorMaterial(float r, float g, float b, float shin)
+{
+ float ambdif[] = {r, g, b, 1.0},
+ em[] = {0.0, 0.0, 0.0, 1.0},
+ spec[] = {1.0, 1.0, 1.0, 1.0};
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, ambdif);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, em);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spec);
+ glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, shin);
+}
+
void DrawRasterBox()
{
double l_dHalfHeight = 0.5 * g_GameState.m_FrustumParms.m_dScreenHeightWorld,
@@ -20,7 +32,7 @@ void DrawRasterBox()
l_dVariable = -l_dHalfHeight + (double)i * l_dDH;
//draw U on xz
glBegin(GL_LINE_STRIP);
- glColor3d(0.0, 0.0, 1.0);
+ setColorMaterial(0.0, 0.0, 1.0, 256.0);
glVertex3d(-l_dHalfWidth, l_dVariable, 0.0);
glVertex3d(-l_dHalfWidth, l_dVariable, -l_dBoxDepth);
glVertex3d(l_dHalfWidth, l_dVariable, -l_dBoxDepth);
@@ -72,7 +84,7 @@ void DrawRasterBox()
//
// //draw a background rectangle
// glBegin(GL_POLYGON);
-// glColor3d(0.5, 0.5, 0.5);
+// setColorMaterial(0.5, 0.5, 0.5, 128.0);
// glVertex2i(0, 0);
// glVertex2i(0, 50);
// glVertex2i(250, 50);
@@ -84,14 +96,14 @@ void DrawRasterBox()
//
// sprintf_s(l_pFpsString, 256, "FPS : %03.1f", g_pFrameTimer->getTicksPerSecond());
// size_t l_sStrLen = strlen(l_pFpsString);
-// glColor3d(0.0, 0.0, 0.0);
+// setColorMaterial(0.0, 0.0, 0.0, 128.0);
// glRasterPos2i(5, 13);
// for (size_t i=0; i<l_sStrLen; i++)
// glutBitmapCharacter(GLUT_BITMAP_8_BY_13, l_pFpsString[i]);
//
// sprintf_s(l_pFpsString, 256, "(Avg: %03.1f)", g_pFrameTimer->getAvgTicksPerSecond());
// l_sStrLen = strlen(l_pFpsString);
-// //glColor3d(0.0, 0.0, 1.0);
+// //setColorMaterial(0.0, 0.0, 1.0, 128.0);
// glRasterPos2i(125, 13);
// for (size_t i=0; i<l_sStrLen; i++)
// glutBitmapCharacter(GLUT_BITMAP_8_BY_13, l_pFpsString[i]);
@@ -99,14 +111,14 @@ void DrawRasterBox()
// //draw the poll timer
// sprintf_s(l_pFpsString, 256, "POLLS: %03.1f", g_pPollTimer->getTicksPerSecond());
// l_sStrLen = strlen(l_pFpsString);
-// //glColor3d(0.0, 0.0, 1.0);
+// //setColorMaterial(0.0, 0.0, 1.0, 128.0);
// glRasterPos2i(5, 39);
// for (size_t i=0; i<l_sStrLen; i++)
// glutBitmapCharacter(GLUT_BITMAP_8_BY_13, l_pFpsString[i]);
//
// sprintf_s(l_pFpsString, 256, "(Avg: %03.1f)", g_pPollTimer->getAvgTicksPerSecond());
// l_sStrLen = strlen(l_pFpsString);
-// //glColor3d(0.0, 0.0, 1.0);
+// //setColorMaterial(0.0, 0.0, 1.0, 128.0);
// glRasterPos2i(125, 39);
// for (size_t i=0; i<l_sStrLen; i++)
// glutBitmapCharacter(GLUT_BITMAP_8_BY_13, l_pFpsString[i]);
@@ -128,36 +140,36 @@ void RenderScene(void)
DrawRasterBox();
glPushMatrix();
- glColor3d(1.0, 0.0, 0.0);
+ setColorMaterial(1.0, 0.0, 0.0, 128.0);
glTranslated(-5.0, 5.0, -15.0);
glutSolidCube(5.0);
- glColor3d(0.0, 1.0, 0.0);
+ setColorMaterial(0.0, 1.0, 0.0, 128.0);
glTranslated(10.0, 0.0, 0.0);
glutSolidCube(5.0);
- glColor3d(0.0, 0.0, 1.0);
+ setColorMaterial(0.0, 0.0, 1.0, 128.0);
glTranslated(0.0, -10.0, 0.0);
glutSolidCube(5.0);
- glColor3d(1.0, 1.0, 0.0);
+ setColorMaterial(1.0, 1.0, 0.0, 128.0);
glTranslated(-10.0, 0.0, 0.0);
glutSolidCube(5.0);
glPopMatrix();
glPushMatrix();
- glColor3d(1.0, 1.0, 0.0);
+ setColorMaterial(1.0, 1.0, 0.0, 128.0);
glTranslated(-5.0, 5.0, -5.0);
glutSolidCube(5.0);
- glColor3d(0.0, 0.0, 1.0);
+ setColorMaterial(0.0, 0.0, 1.0, 128.0);
glTranslated(10.0, 0.0, 0.0);
glutSolidCube(5.0);
- glColor3d(0.0, 1.0, 0.0);
+ setColorMaterial(0.0, 1.0, 0.0, 128.0);
glTranslated(0.0, -10.0, 0.0);
glutSolidCube(5.0);
- glColor3d(1.0, 0.0, 0.0);
+ setColorMaterial(1.0, 0.0, 0.0, 128.0);
glTranslated(-10.0, 0.0, 0.0);
glutSolidCube(5.0);
glPopMatrix();
- glColor3d(1.0, 0.0, 1.0);
+ setColorMaterial(1.0, 0.0, 1.0, 128.0);
glPushMatrix();
glTranslated(0.0, 0.0, 5.0);
//glScaled(1.0, 1.0, 10.0);