Files
stgsharp/源代码/StgShqrpGraphic/StgSharpGraphic.c
T

79 lines
1.6 KiB
C

// StgShqrpGraphic.cpp : 定义 DLL 的导出函数。
//
#include "GLenv/include/glad/glad.h"
#include "GLenv/include/GLFW/glfw3.h"
#include "framework.h"
#include <stdio.h>
#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];
}