Commits

Jason McKesson committed 6bdb602 Merge

Merge with 1.1

Comments (0)

Files changed (6)

 	[[lua $<dir>LoadGen.lua -spec=gl -version=3.3 -profile=compatibility -style=noload_cpp $<dir>test/noload_cpp_noext/test]],
 	[[lua $<dir>LoadGen.lua -spec=gl -version=3.3 -profile=core -style=noload_c -stdext=gl_ubiquitous.txt $<dir>test/noload_c/test]],
 	[[lua $<dir>LoadGen.lua -spec=gl -version=2.1 -style=noload_c -stdext=gl_ubiquitous.txt $<dir>test/noload_c_old/test]],
+	[[lua $<dir>LoadGen.lua -spec=gl -version=3.3 -profile=compatibility -style=noload_c $<dir>test/noload_c_noext/test]],
 }
 
 local platTests =
 		[[lua $<dir>LoadGen.lua -spec=wgl -style=noload_cpp  -stdext=wgl_common.txt $<dir>test/noload_cpp_noext/test]],
 		[[lua $<dir>LoadGen.lua -spec=wgl -style=noload_c  -stdext=wgl_common.txt $<dir>test/noload_c/test]],
 		[[lua $<dir>LoadGen.lua -spec=wgl -style=noload_c  -stdext=wgl_common.txt $<dir>test/noload_c_old/test]],
+		[[lua $<dir>LoadGen.lua -spec=wgl -style=noload_c $<dir>test/noload_c_noext/test]],
 	},
 	
 	glX =
 		[[lua $<dir>LoadGen.lua -spec=glX -style=noload_cpp -stdext=glx_common.txt $<dir>test/noload_cpp_noext/test]],
 		[[lua $<dir>LoadGen.lua -spec=glX -style=noload_c -stdext=glx_common.txt $<dir>test/noload_c/test]],
 		[[lua $<dir>LoadGen.lua -spec=glX -style=noload_c -stdext=glx_common.txt $<dir>test/noload_c_old/test]],
+		[[lua $<dir>LoadGen.lua -spec=glX -style=noload_c $<dir>test/noload_c_noext/test]],
 	},
 }
 

modules/NoloadC_Style.lua

 	local arrayLength = #options.extensions
 	if(arrayLength == 0) then arrayLength = 1 end
 
-	hFile:fmt("static %s g_mappingTable[%i] =\n", mapTableName, arrayLength)
-	hFile:write "{\n"
-	hFile:inc()
-	for _, extName in ipairs(options.extensions) do
-		hFile:fmt('{"%s%s", &%s%sext_%s},\n',
-			spec.ExtNamePrefix(),
-			extName,
-			options.prefix,
-			spec.DeclPrefix(),
-			extName)
+	hFile:fmt("static %s g_mappingTable[%i]", mapTableName, arrayLength)
+	if(arrayLength == 1) then
+		hFile:rawwrite "; //This is intensionally left uninitialized. \n"
+	else
+		hFile:rawwrite " = \n"
+		hFile:write "{\n"
+		hFile:inc()
+		for _, extName in ipairs(options.extensions) do
+			hFile:fmt('{"%s%s", &%s%sext_%s},\n',
+				spec.ExtNamePrefix(),
+				extName,
+				options.prefix,
+				spec.DeclPrefix(),
+				extName)
+		end
+		hFile:dec()
+		hFile:write "};\n"
 	end
-	hFile:dec()
-	hFile:write "};\n"
 	
 	hFile:write "\n"
 	hFile:fmtblock([[

modules/NoloadCpp_Style.lua

 	local arrayLength = #options.extensions
 	if(arrayLength == 0) then arrayLength = 1 end
 
-	hFile:fmt("MapEntry g_mappingTable[%i] =\n", arrayLength)
-	hFile:write "{\n"
-	hFile:inc()
-	for _, extName in ipairs(options.extensions) do
-		hFile:fmt('{"%s%s", &exts::var_%s},\n',
-			spec.ExtNamePrefix(),
-			extName,
-			extName)
+	hFile:fmt("MapEntry g_mappingTable[%i]", arrayLength)
+	if(arrayLength == 1) then
+		hFile:rawwrite "; //This is intensionally left uninitialized. \n"
+	else
+		hFile:rawwrite " =\n"
+		hFile:write "{\n"
+		hFile:inc()
+		for _, extName in ipairs(options.extensions) do
+			hFile:fmt('{"%s%s", &exts::var_%s},\n',
+				spec.ExtNamePrefix(),
+				extName,
+				extName)
+		end
+		hFile:dec()
+		hFile:write "};\n"
 	end
-	hFile:dec()
-	hFile:write "};\n"
 	
 	hFile:write "\n"
 	hFile:fmtblock([[

test/func_cpp/test.cpp

-#include <string>
-#include <exception>
-#include <stdexcept>
-#include <stdio.h>
-#include <stdlib.h>
 
+
+#include <iostream>
 #include "gl_test.hpp"
-#ifdef _WIN32
-#include "wgl_test.hpp"
-#else
-#include "glx_test.hpp"
-#endif
 #include <GL/freeglut.h>
 
-GLuint positionBufferObject;
-GLuint program;
-GLuint vao;
+int main(int argc, char* argv[])
+{
+	// FreeGLUT stuff init stuff
+	glutInit(&argc, argv);
+	glutInitContextVersion(3, 1);
+	glutInitContextProfile(GLUT_CORE_PROFILE);
 
-GLuint BuildShader(GLenum eShaderType, const std::string &shaderText)
-{
-	GLuint shader = gl::CreateShader(eShaderType);
-	const char *strFileData = shaderText.c_str();
-	gl::ShaderSource(shader, 1, &strFileData, NULL);
+	// this works but shouldn't
+	bool load = gl::sys::LoadFunctions();
+	std::cout << "Loaded: " << (load ? "True" : "False") << std::endl;
+	gl::GetString(gl::VERSION); // no crash at glGetString
 
-	gl::CompileShader(shader);
+	// works as intended
+	int winID = glutCreateWindow("Engine2 Test");
+	load = gl::sys::LoadFunctions();  
+	std::cout << gl::GetString(gl::VERSION) << std::endl;
+	glutDestroyWindow(winID);
 
-	GLint status;
-	gl::GetShaderiv(shader, gl::COMPILE_STATUS, &status);
-	if (status == gl::FALSE_)
-	{
-		GLint infoLogLength;
-		gl::GetShaderiv(shader, gl::INFO_LOG_LENGTH, &infoLogLength);
-
-		GLchar *strInfoLog = new GLchar[infoLogLength + 1];
-		gl::GetShaderInfoLog(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;
-
-		throw std::runtime_error("Compile failure in shader.");
-	}
-
-	return shader;
-}
-
-
-void init()
-{
-	gl::GenVertexArrays(1, &vao);
-	gl::BindVertexArray(vao);
-
-	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,
-	};
-
-	gl::GenBuffers(1, &positionBufferObject);
-	gl::BindBuffer(gl::ARRAY_BUFFER, positionBufferObject);
-	gl::BufferData(gl::ARRAY_BUFFER, sizeof(vertexPositions), vertexPositions, gl::STATIC_DRAW);
-	gl::BindBuffer(gl::ARRAY_BUFFER, 0);
-
-	const std::string vertexShader(
-		"#version 330\n"
-		"layout(location = 0) in vec4 position;\n"
-		"void main()\n"
-		"{\n"
-		"   gl_Position = position;\n"
-		"}\n"
-		);
-
-	const std::string fragmentShader(
-		"#version 330\n"
-		"out vec4 outputColor;\n"
-		"void main()\n"
-		"{\n"
-		"   outputColor = vec4(0.0f, 0.0f, 0.0f, 1.0f);\n"
-		"}\n"
-		);
-
-	GLuint vertShader = BuildShader(gl::VERTEX_SHADER, vertexShader);
-	GLuint fragShader = BuildShader(gl::FRAGMENT_SHADER, fragmentShader);
-
-	program = gl::CreateProgram();
-	gl::AttachShader(program, vertShader);
-	gl::AttachShader(program, fragShader);	
-	gl::LinkProgram(program);
-
-	GLint status;
-	gl::GetProgramiv (program, gl::LINK_STATUS, &status);
-	if (status == gl::FALSE_)
-	{
-		GLint infoLogLength;
-		gl::GetProgramiv(program, gl::INFO_LOG_LENGTH, &infoLogLength);
-
-		GLchar *strInfoLog = new GLchar[infoLogLength + 1];
-		gl::GetProgramInfoLog(program, infoLogLength, NULL, strInfoLog);
-		fprintf(stderr, "Linker failure: %s\n", strInfoLog);
-		delete[] strInfoLog;
-
-		throw std::runtime_error("Shader could not be linked.");
-	}
-}
-
-//Called to update the display.
-//You should call glutSwapBuffers after all of your rendering to display what you rendered.
-//If you need continuous updates of the screen, call glutPostRedisplay() at the end of the function.
-void display()
-{
-	gl::ClearColor(1.0f, 1.0f, 1.0f, 1.0f);
-	gl::Clear(gl::COLOR_BUFFER_BIT);
-
-	gl::UseProgram(program);
-
-	gl::BindBuffer(gl::ARRAY_BUFFER, positionBufferObject);
-	gl::EnableVertexAttribArray(0);
-	gl::VertexAttribPointer(0, 4, gl::FLOAT, gl::FALSE_, 0, 0);
-
-	gl::DrawArrays(gl::TRIANGLES, 0, 3);
-
-	gl::DisableVertexAttribArray(0);
-	gl::UseProgram(0);
-
-	glutSwapBuffers();
-}
-
-//Called whenever the window is resized. The new window size is given, in pixels.
-//This is an opportunity to call gl::Viewport or gl::Scissor to keep up with the change in size.
-void reshape (int w, int h)
-{
-	gl::Viewport(0, 0, (GLsizei) w, (GLsizei) h);
-}
-
-//Called whenever a key on the keyboard was pressed.
-//The key is given by the ''key'' parameter, which is in ASCII.
-//It's often a good idea to have the escape key (ASCII value 27) call glutLeaveMainLoop() to 
-//exit the program.
-void keyboard(unsigned char key, int x, int y)
-{
-	switch (key)
-	{
-	case 27:
-		glutLeaveMainLoop();
-		break;
-	}
-}
-
-
-int main(int argc, char** argv)
-{
-	glutInit(&argc, argv);
-
-	int width = 500;
-	int height = 500;
-	unsigned int displayMode = GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH | GLUT_STENCIL;
-
-	glutInitDisplayMode(displayMode);
-	glutInitContextVersion (3, 3);
-	glutInitContextProfile(GLUT_CORE_PROFILE);
-	glutInitWindowSize (width, height); 
-	glutInitWindowPosition (300, 200);
-	glutCreateWindow (argv[0]);
-
-	glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION);
-
-	gl::exts::LoadTest didLoad = gl::sys::LoadFunctions();
-	if(!didLoad)
-		printf("OpenGL: %i\n", didLoad.GetNumMissing());
-	else
-		printf("OpenGL Loaded!\n");
-
-	init();
-
-#ifdef _WIN32
-	HDC hdc = wglGetCurrentDC();
-	wgl::exts::LoadTest load = wgl::sys::LoadFunctions(hdc);
-	if(!load)
-		printf("WGL: %i\n", load.GetNumMissing());
-	else
-		printf("WGL Loaded!\n");
-#else
-#endif
-
-	glutDisplayFunc(display); 
-	glutReshapeFunc(reshape);
-	glutKeyboardFunc(keyboard);
-	glutMainLoop();
 	return 0;
 }

test/noload_c_noext/test.cpp

+#include <string>
+#include <exception>
+#include <stdexcept>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "gl_test.h"
+#ifdef _WIN32
+#include "wgl_test.h"
+#else
+#include "glx_test.h"
+#endif
+#include <GL/freeglut.h>
+
+GLuint positionBufferObject;
+GLuint program;
+GLuint vao;
+
+GLuint BuildShader(GLenum eShaderType, const std::string &shaderText)
+{
+	GLuint shader = glCreateShader(eShaderType);
+	const char *strFileData = shaderText.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;
+
+		throw std::runtime_error("Compile failure in shader.");
+	}
+
+	return shader;
+}
+
+
+void init()
+{
+	glGenVertexArrays(1, &vao);
+	glBindVertexArray(vao);
+
+	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,
+	};
+
+	glGenBuffers(1, &positionBufferObject);
+	glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);
+	glBufferData(GL_ARRAY_BUFFER, sizeof(vertexPositions), vertexPositions, GL_STATIC_DRAW);
+	glBindBuffer(GL_ARRAY_BUFFER, 0);
+
+	const std::string vertexShader(
+		"#version 330\n"
+		"layout(location = 0) in vec4 position;\n"
+		"void main()\n"
+		"{\n"
+		"   gl_Position = position;\n"
+		"}\n"
+		);
+
+	const std::string fragmentShader(
+		"#version 330\n"
+		"out vec4 outputColor;\n"
+		"void main()\n"
+		"{\n"
+		"   outputColor = vec4(0.0f, 0.0f, 0.0f, 1.0f);\n"
+		"}\n"
+		);
+
+	GLuint vertShader = BuildShader(GL_VERTEX_SHADER, vertexShader);
+	GLuint fragShader = BuildShader(GL_FRAGMENT_SHADER, fragmentShader);
+
+	program = glCreateProgram();
+	glAttachShader(program, vertShader);
+	glAttachShader(program, fragShader);	
+	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;
+
+		throw std::runtime_error("Shader could not be linked.");
+	}
+}
+
+//Called to update the display.
+//You should call glutSwapBuffers after all of your rendering to display what you rendered.
+//If you need continuous updates of the screen, call glutPostRedisplay() at the end of the function.
+void display()
+{
+	glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
+	glClear(GL_COLOR_BUFFER_BIT);
+
+	glUseProgram(program);
+
+	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();
+}
+
+//Called whenever the window is resized. The new window size is given, in pixels.
+//This is an opportunity to call glViewport or GL_Scissor 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.
+//The key is given by the ''key'' parameter, which is in ASCII.
+//It's often a good idea to have the escape key (ASCII value 27) call glutLeaveMainLoop() to 
+//exit the program.
+void keyboard(unsigned char key, int x, int y)
+{
+	switch (key)
+	{
+	case 27:
+		glutLeaveMainLoop();
+		break;
+	}
+}
+
+
+int main(int argc, char** argv)
+{
+	glutInit(&argc, argv);
+
+	int width = 500;
+	int height = 500;
+	unsigned int displayMode = GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH | GLUT_STENCIL;
+
+	glutInitDisplayMode(displayMode);
+	glutInitContextVersion (3, 3);
+	glutInitContextProfile(GLUT_CORE_PROFILE);
+	glutInitWindowSize (width, height); 
+	glutInitWindowPosition (300, 200);
+	glutCreateWindow (argv[0]);
+
+	glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION);
+
+	ogl_CheckExtensions();
+#ifdef _WIN32
+	wgl_CheckExtensions(wglGetCurrentDC());
+#endif
+
+	init();
+
+
+	glutDisplayFunc(display); 
+	glutReshapeFunc(reshape);
+	glutKeyboardFunc(keyboard);
+	glutMainLoop();
+	return 0;
+}

test/premake4.lua

 	{name = "noload_cpp_noext"},
 	{name = "noload_c"},
 	{name = "noload_c_old"},
+	{name = "noload_c_noext"},
 }
 
 local oldDir = os.getcwd()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.