summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDennis Peeten <dpeeten@onsneteindhoven.nl>2008-04-17 21:52:05 (GMT)
committerDennis Peeten <dpeeten@onsneteindhoven.nl>2008-04-17 21:52:05 (GMT)
commit5bc71079ddbeeb61c94829842cab30fefb4581e2 (patch)
tree891355686b8571b3e7290e459480b2b5516e463c
parent2bb23e67db0e2a23d480126f4e0fc753fa0cde35 (diff)
download2iv55-5bc71079ddbeeb61c94829842cab30fefb4581e2.zip
2iv55-5bc71079ddbeeb61c94829842cab30fefb4581e2.tar.gz
2iv55-5bc71079ddbeeb61c94829842cab30fefb4581e2.tar.bz2
shadertest
-rw-r--r--headtrack_stereo_demo/headtrack_stereo_demo.sln6
-rw-r--r--headtrack_stereo_demo/headtrack_stereo_demo.vcproj5
-rw-r--r--headtrack_stereo_demo/shaders/greyscale.frag5
-rw-r--r--headtrack_stereo_demo/shadertest/shadertest.cpp200
-rw-r--r--headtrack_stereo_demo/shadertest/shadertest.vcproj209
-rw-r--r--headtrack_stereo_demo/shadertest/testshaders/greyscale.frag51
-rw-r--r--headtrack_stereo_demo/shadertest/testshaders/greyscale.vert19
-rw-r--r--headtrack_stereo_demo/src/main.cpp97
-rw-r--r--headtrack_stereo_demo/src/scenerenderer.cpp42
9 files changed, 602 insertions, 32 deletions
diff --git a/headtrack_stereo_demo/headtrack_stereo_demo.sln b/headtrack_stereo_demo/headtrack_stereo_demo.sln
index 24dbc9b..996dd65 100644
--- a/headtrack_stereo_demo/headtrack_stereo_demo.sln
+++ b/headtrack_stereo_demo/headtrack_stereo_demo.sln
@@ -3,6 +3,8 @@ Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "headtrack_stereo_demo", "headtrack_stereo_demo.vcproj", "{6F0EBF4B-4D70-4501-95EB-2BF909878951}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shadertest", "shadertest\shadertest.vcproj", "{4D268921-0501-4C48-A1CC-C74E556F2599}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -13,6 +15,10 @@ Global
{6F0EBF4B-4D70-4501-95EB-2BF909878951}.Debug|Win32.Build.0 = Debug|Win32
{6F0EBF4B-4D70-4501-95EB-2BF909878951}.Release|Win32.ActiveCfg = Release|Win32
{6F0EBF4B-4D70-4501-95EB-2BF909878951}.Release|Win32.Build.0 = Release|Win32
+ {4D268921-0501-4C48-A1CC-C74E556F2599}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4D268921-0501-4C48-A1CC-C74E556F2599}.Debug|Win32.Build.0 = Debug|Win32
+ {4D268921-0501-4C48-A1CC-C74E556F2599}.Release|Win32.ActiveCfg = Release|Win32
+ {4D268921-0501-4C48-A1CC-C74E556F2599}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/headtrack_stereo_demo/headtrack_stereo_demo.vcproj b/headtrack_stereo_demo/headtrack_stereo_demo.vcproj
index 7c3502e..844c39e 100644
--- a/headtrack_stereo_demo/headtrack_stereo_demo.vcproj
+++ b/headtrack_stereo_demo/headtrack_stereo_demo.vcproj
@@ -20,6 +20,7 @@
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(OutDir)\intermediate"
ConfigurationType="1"
+ ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
@@ -92,7 +93,7 @@
<Tool
Name="VCPostBuildEventTool"
Description="Copying files to output directory..."
- CommandLine="copy lib\win32\*.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\shaders&quot;&#x0D;&#x0A;copy shaders\* &quot;$(OutDir)\shaders\&quot;"
+ CommandLine="copy lib\win32\*.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\shaders&quot;&#x0D;&#x0A;copy shaders\* &quot;$(OutDir)\shaders\&quot;&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
@@ -173,7 +174,7 @@
<Tool
Name="VCPostBuildEventTool"
Description="Copying dll&apos;s to output directory..."
- CommandLine="copy lib\win32\*.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\shaders&quot;&#x0D;&#x0A;copy shaders\* &quot;$(OutDir)\shaders\&quot;"
+ CommandLine="copy lib\win32\*.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\shaders&quot;&#x0D;&#x0A;copy shaders\* &quot;$(OutDir)\shaders\&quot;&#x0D;&#x0A;"
/>
</Configuration>
</Configurations>
diff --git a/headtrack_stereo_demo/shaders/greyscale.frag b/headtrack_stereo_demo/shaders/greyscale.frag
index d4b77cd..107e586 100644
--- a/headtrack_stereo_demo/shaders/greyscale.frag
+++ b/headtrack_stereo_demo/shaders/greyscale.frag
@@ -41,10 +41,11 @@ void main()
//convert to grayscale using NTSC conversion weights
//gray = dot(color.rgb, vec3(0.299, 0.587, 0.114));
gray = dot(color.rgb, g_ConversionWeights);
-
+ //gray = color.r * 0.299 + color.g * 0.587 + color.b * 0.114;
+
//copy grayscale to rgb components and use the alpha from the final color
gl_FragColor = vec4(gray, gray, gray, color.a);
// convert grayscale to sepia
//gl_FragColor = vec4(gray * vec3(1.2, 1.0, 0.8), color.a);
-}
+} \ No newline at end of file
diff --git a/headtrack_stereo_demo/shadertest/shadertest.cpp b/headtrack_stereo_demo/shadertest/shadertest.cpp
new file mode 100644
index 0000000..28ca58d
--- /dev/null
+++ b/headtrack_stereo_demo/shadertest/shadertest.cpp
@@ -0,0 +1,200 @@
+#include <GL/glew.h>
+#include <GL/glut.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "textfile.h"
+GLuint g_GreyScaleShaderProgram; //handle to the grayscale shader program
+GLint g_GSConvScaleLoc; //handle to the g_ConversionScale variable in the shader
+
+void Display()
+{
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ float ambdif[] = {0.0, 0.0, 1.0, 1.0},
+ em[] = {0.0, 0.0, 0.0, 1.0},
+ spec[] = {1.0, 1.0, 1.0, 1.0};
+
+ glPushMatrix();
+
+ 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, 64.0);
+
+ //glColor3d(0.0, 0.0, 1.0);
+ glTranslated(0.0, 0.0, -30.0);
+ glRotated(-60.0, 0.0, 1.0, 0.0);
+ glutSolidTeapot(20.0);
+ glPopMatrix();
+
+ glutSwapBuffers();
+}
+
+void Idle()
+{
+ glutPostRedisplay();
+}
+
+void Reshape(int w, int h)
+{
+ glViewport(0, 0, w, h);
+
+ //should we set a new projection matrix?
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ glFrustum(-20.0, 20.0, -15.0, 15.0, 100.0, 1100.0);
+ glTranslated(0.0, 0.0, -100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+}
+
+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);
+
+ vs_text = textFileRead("shaders\\greyscale.vert");
+ if (vs_text == NULL)
+ {
+ return false;
+ }
+ fs_text = textFileRead("shaders\\greyscale.frag");
+ if (fs_text == NULL)
+ {
+ free(vs_text);
+ return false;
+ }
+
+ glShaderSource(vs, 1, (const char**)&vs_text,NULL);
+ glShaderSource(fs, 1, (const char**)&fs_text,NULL);
+
+ free(vs_text);
+ 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_GreyScaleShaderProgram = glCreateProgram();
+ glAttachShader(g_GreyScaleShaderProgram,fs);
+ glAttachShader(g_GreyScaleShaderProgram,vs);
+
+ glLinkProgram(g_GreyScaleShaderProgram);
+ printProgramInfoLog(g_GreyScaleShaderProgram);
+ glGetProgramiv(g_GreyScaleShaderProgram, GL_LINK_STATUS, &l_bStatus);
+ if (l_bStatus == GL_FALSE)
+ {
+ return false;
+ }
+
+ //g_GSConvScaleLoc = glGetUniformLocation(g_GameState.m_GreyScaleShaderProgram, "g_ConversionWeights");
+
+
+
+ return true;
+}
+
+int main (int argc, char** argv)
+{
+ glutInit(&argc, argv);
+ glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
+
+ glutCreateWindow("HeadTrackDemo");
+ glutReshapeWindow(800, 600);
+
+ //register GLUT callback routines
+ glutDisplayFunc(Display);
+ glutReshapeFunc(Reshape);
+ glutIdleFunc(Idle);
+
+ //init openGL state variables
+ //InitGL();
+ glClearColor(1.0, 1.0, 1.0, 1.0);
+ glClearDepth(1000.0);
+ glShadeModel(GL_SMOOTH);
+ glEnable(GL_DEPTH_TEST);
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+
+
+ //glEnable(GL_COLOR_MATERIAL);
+ //glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+
+ //init the GL Extension Wrangler library
+ glewInit();
+
+ //check for OpenGL 2.0 support
+ if (!glewIsSupported("GL_VERSION_2_0"))
+ {
+ printf("Your graphics hardware/software does not support OpenGL 2.0\n");
+ exit(1);
+ }
+
+ //try to load the grayscale shader
+ if (!LoadGreyScaleShader())
+ {
+ printf("Failed to load vertex/fragment shader.\n");
+ exit(1);
+ }
+
+ //glutFullScreen();
+
+
+ glUseProgram(g_GreyScaleShaderProgram);
+
+ //action!!
+ glutMainLoop();
+
+ return 0;
+} \ No newline at end of file
diff --git a/headtrack_stereo_demo/shadertest/shadertest.vcproj b/headtrack_stereo_demo/shadertest/shadertest.vcproj
new file mode 100644
index 0000000..c6334d0
--- /dev/null
+++ b/headtrack_stereo_demo/shadertest/shadertest.vcproj
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="shadertest"
+ ProjectGUID="{4D268921-0501-4C48-A1CC-C74E556F2599}"
+ RootNamespace="shadertest"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(IntDir)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\include;..\src"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="glut32.lib glew32.lib"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="D:\courses\IVE\headtrack_stereo_demo\lib\win32"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="copy ..\lib\win32\*.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\shaders&quot;&#x0D;&#x0A;copy testshaders\* &quot;$(OutDir)\shaders\&quot;&#x0D;&#x0A;"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\shadertest.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\src\textfile.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath="..\src\textfile.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/headtrack_stereo_demo/shadertest/testshaders/greyscale.frag b/headtrack_stereo_demo/shadertest/testshaders/greyscale.frag
new file mode 100644
index 0000000..5ef9084
--- /dev/null
+++ b/headtrack_stereo_demo/shadertest/testshaders/greyscale.frag
@@ -0,0 +1,51 @@
+//uniform vec3 g_ConversionWeights;
+
+
+varying vec4 ambient, diffuse;
+varying vec3 normal, lightdir, halfvector;
+
+//uniform sampler2D tex, hello;
+
+void main()
+{
+ float NdotL, NdotHV, gray;
+ vec3 n = normalize(normal);
+ vec4 // texcolor = texture2D(tex, gl_TexCoord[0].st),
+ fragcolor = ambient,
+ color;
+
+ //compute the dot pruduct of the normalized normal and light direction
+ NdotL = max(dot(n, lightdir), 0.0);
+
+ if (NdotL > 0.0)
+ {
+ //add diffuse light component
+ fragcolor += diffuse * NdotL;
+
+ //compute the dot product of the normal and half vector (of the lightdir and eye position)
+ NdotHV = max(dot(n, halfvector), 0.0);
+
+ fragcolor += gl_FrontMaterial.specular * gl_LightSource[0].specular *
+ pow(NdotHV, gl_FrontMaterial.shininess);
+ }
+
+
+
+ //modulate the fragment color with the texel color for the final color
+// color = texcolor * fragcolor;
+ color = fragcolor;
+
+ //smoothstep not available on ati motbility 8600
+ //color += smoothstep(1.0,0.2,NdotL) * texture2D(hello, gl_TexCoord[0].st);
+
+ //convert to grayscale using NTSC conversion weights
+ gray = dot(color.rgb, vec3(0.299, 0.587, 0.114));
+ //gray = dot(color.rgb, g_ConversionWeights);
+ //gray = color.r * 0.299 + color.g * 0.587 + color.b * 0.114;
+
+ //copy grayscale to rgb components and use the alpha from the final color
+ gl_FragColor = vec4(gray, gray, gray, color.a);
+
+ // convert grayscale to sepia
+ //gl_FragColor = vec4(gray * vec3(1.2, 1.0, 0.8), color.a);
+} \ No newline at end of file
diff --git a/headtrack_stereo_demo/shadertest/testshaders/greyscale.vert b/headtrack_stereo_demo/shadertest/testshaders/greyscale.vert
new file mode 100644
index 0000000..0eec6f5
--- /dev/null
+++ b/headtrack_stereo_demo/shadertest/testshaders/greyscale.vert
@@ -0,0 +1,19 @@
+varying vec4 ambient, diffuse;
+varying vec3 normal, lightdir, halfvector;
+
+void main()
+{
+ //transform the normal
+ normal = gl_NormalMatrix * gl_Normal;
+
+ //determine the light direction
+ lightdir = normalize(gl_LightSource[0].position.xyz);
+ halfvector = normalize(gl_LightSource[0].halfVector.xyz);
+
+ //compute diffuse and ambient terms
+ diffuse = gl_FrontMaterial.diffuse * gl_LightSource[0].diffuse;
+ ambient = gl_FrontMaterial.ambient * (gl_LightSource[0].ambient + gl_LightModel.ambient);
+
+ gl_Position = ftransform();
+ //gl_TexCoord[0] = gl_MultiTexCoord0;
+}
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);