一、OpenGL学习网站
http://ogldev.atspace.co.uk/
https://www.opengl.org/
https://learnopengl-cn.github.io/
http://www.humus.name/Articles/Persson_LowLevelThinking.pdf
https://learnopengl.com
https://www.glfw.org/docs/latest/window.html#window_full_screen
https://www.khronos.org/opengl/wiki/Built-in_Variable_(GLSL)
二、四元数和旋转
三、深度测试
1、开启深度测试
glEnable(GL_DEPTH_TEST);
2、清理深度测试位
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
3、禁止深度写入
glDepthMask(GL_FALSE);
4、深度比较方法
glDepthFunc(GL_LESS);
四、Blend混合
1、开启混合
glEnable(GL_BLEND);
2、设置混合方式
glBlendFunc(GLenum sfactor, GLenum dfactor)
颜色和透明通道分别设置
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO);
设置混合方式
glBlendEquation(GLenum mode)
五、问题
1、光源无效
法线坐标系不对
Normal=mat3(transpose(inverse(model))) * aNormal;
2、模板测试显示不正确
在绘制每个模型时,都要调用一次该模型shader
清理缓冲位
3、调用glCreateShader报错
glfw和glad配对
需要提前初始化glad
// glad: load all OpenGL function pointers
// ---------------------------------------
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
//std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}