Source

gltut / Test / test.cpp

Diff from to

Test/test.cpp

+/***********************************************************************
+This file contains all of the functions you need to implement, as well as
+when/why they are called. You can copy this file and simply implement
+these function.
+***********************************************************************/
 
-#include <string>
-#include <vector>
-#include <iostream>
-#include <sstream>
-#include <glloader/gl_3_2_comp.h>
+#include <glload/gl_3_3_comp.h>
 #include <GL/freeglut.h>
-#include "../framework/framework.h"
 
 
-GLuint CreateShader(GLenum eShaderType, const std::string &strShaderFile)
-{
-	GLuint shader = glCreateShader(eShaderType);
-	const char *strFileData = strShaderFile.c_str();
-	glShaderSource(shader, 1, &strFileData, NULL);
-
-	glCompileShader(shader);
-
-	GLint status;
-	glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
-	if (status == GL_FALSE)
-	{
-		GLint infoLogLength;
-		glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLength);
-
-		GLchar *strInfoLog = new GLchar[infoLogLength + 1];
-		glGetShaderInfoLog(shader, infoLogLength, NULL, strInfoLog);
-
-		const char *strShaderType = NULL;
-		switch(eShaderType)
-		{
-		case GL_VERTEX_SHADER: strShaderType = "vertex"; break;
-		case GL_GEOMETRY_SHADER: strShaderType = "geometry"; break;
-		case GL_FRAGMENT_SHADER: strShaderType = "fragment"; break;
-		}
-
-		fprintf(stderr, "Compile failure in %s shader:\n%s\n", strShaderType, strInfoLog);
-		delete[] strInfoLog;
-	}
-
-	return shader;
-}
-
-GLuint CreateProgram(const std::vector<GLuint> &shaderList)
-{
-	GLuint program = glCreateProgram();
-
-	for(size_t iLoop = 0; iLoop < shaderList.size(); iLoop++)
-		glAttachShader(program, shaderList[iLoop]);
-
-	glLinkProgram(program);
-
-	GLint status;
-	glGetProgramiv (program, GL_LINK_STATUS, &status);
-	if (status == GL_FALSE)
-	{
-		GLint infoLogLength;
-		glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLogLength);
-
-		GLchar *strInfoLog = new GLchar[infoLogLength + 1];
-		glGetProgramInfoLog(program, infoLogLength, NULL, strInfoLog);
-		fprintf(stderr, "Linker failure: %s\n", strInfoLog);
-		delete[] strInfoLog;
-	}
-
-	return program;
-}
-
-GLuint theProgram;
-
-const std::string strVertexShader(
-								  "#version 330\n"
-								  "layout(location = 0) in vec4 position;\n"
-								  "void main()\n"
-								  "{\n"
-								  "   gl_Position = position;\n"
-								  "}\n"
-								  );
-
-const std::string strFragmentShader(
-									"#version 330\n"
-									"out vec4 outputColor;\n"
-									"void main()\n"
-									"{\n"
-									"   outputColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);\n"
-									"}\n"
-									);
-
-void InitializeProgram()
-{
-	std::vector<GLuint> shaderList;
-
-	shaderList.push_back(CreateShader(GL_VERTEX_SHADER, strVertexShader));
-	shaderList.push_back(CreateShader(GL_FRAGMENT_SHADER, strFragmentShader));
-
-	theProgram = CreateProgram(shaderList);
-}
-
-const float vertexPositions[] = {
-	0.75f, 0.75f, 0.0f, 1.0f,
-	0.75f, -0.75f, 0.0f, 1.0f,
-	-0.75f, -0.75f, 0.0f, 1.0f,
-};
-
-GLuint positionBufferObject;
-GLuint vao;
-
-
-void InitializeVertexBuffer()
-{
-	glGenBuffers(1, &positionBufferObject);
-
-	glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);
-	glBufferData(GL_ARRAY_BUFFER, sizeof(vertexPositions), vertexPositions, GL_STATIC_DRAW);
-	glBindBuffer(GL_ARRAY_BUFFER, 0);
-}
-
-const char *g_strTestFloats = " \n-10.0 10.0 23.4\n4.32 -4 -5 ";
-Framework::Mesh *g_theMesh = NULL;
-
 //Called after the window and OpenGL are initialized. Called exactly once, before the main loop.
 void init()
 {
-	try
-	{
-		g_theMesh = new Framework::Mesh("mesh.xml");
-	}
-	catch(std::exception &except)
-	{
-		g_theMesh = NULL;
-		printf(except.what());
-	}
 
-	InitializeProgram();
-	InitializeVertexBuffer();
-
-	glGenVertexArrays(1, &vao);
-	glBindVertexArray(vao);
 }
 
 //Called to update the display.
 //If you need continuous updates of the screen, call glutPostRedisplay() at the end of the function.
 void display()
 {
-	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
-	glClear(GL_COLOR_BUFFER_BIT);
-
-	glUseProgram(theProgram);
-
-	if(g_theMesh)
-		g_theMesh->Render();
-/*
-	glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);
-	glEnableVertexAttribArray(0);
-	glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
-
-	glDrawArrays(GL_TRIANGLES, 0, 3);
-*/
-
-	glDisableVertexAttribArray(0);
-	glUseProgram(0);
 
 	glutSwapBuffers();
 }
 //This is an opportunity to call glViewport or glScissor to keep up with the change in size.
 void reshape (int w, int h)
 {
-	glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+
 }
 
 //Called whenever a key on the keyboard was pressed.
 //exit the program.
 void keyboard(unsigned char key, int x, int y)
 {
-	switch (key)
-	{
-	case 27:
-		delete g_theMesh;
-		glutLeaveMainLoop();
-		break;
-	}
+
 }
 
-
+//Called before FreeGLUT is initialized. It should return the FreeGLUT
+//display mode flags that you want to use. The initial value are the standard ones
+//used by the framework. You can modify it or just return you own set.
+//This function can also set the width/height of the window. The initial
+//value of these variables is the default, but you can change it.
+unsigned int defaults(unsigned int displayMode, int &width, int &height) {return displayMode;}