77 lines
1.6 KiB
C
77 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);
|
|
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);
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
return shaderProgram;
|
|
}
|
|
|
|
}
|
|
|
|
char* _cdecl readLog()
|
|
{
|
|
infolog[511] = '\0';
|
|
return &infolog;
|
|
}
|