// StgShqrpGraphic.cpp : 定义 DLL 的导出函数。 // #include "GLenv/include/glad/glad.h" #include "GLenv/include/GLFW/glfw3.h" #include "framework.h" #include #include "StgSharpGraphic.h" extern char* infolog[512] = { 0 }; void printShaderCode(char* const* code) { printf(*code); } SSGC_API void initGL(int majorVersion, int minorVersion) { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); #ifdef __APPLE__ glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); #endif // __APPLE__ } SSGC_API int initGLAD(void) { return gladLoadGLLoader((GLADloadproc)glfwGetProcAddress); } SSGC_API unsigned int loadShaderCode(char* const shaderCode, GLint shadertype) { unsigned int shader = glCreateShader(shadertype); glShaderSource(shader, 1, &shaderCode, NULL); glCompileShader(shader); int success; glGetShaderiv(shader, GL_COMPILE_STATUS, &success); if (!success) { glGetShaderInfoLog(shader, 512, NULL, infolog); infolog[511] = '\0'; printf(infolog); return 0; } else { return shader; } } SSGC_API unsigned int linkShaderProgram(GLuint shaderProgram) { glLinkProgram(shaderProgram); int success; glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success); if (!success) { glGetProgramInfoLog(shaderProgram, 512, NULL, infolog); printf(infolog); return 0; } else { return shaderProgram; } } char* _cdecl readLog() { return infolog[0]; }