LearnOpenGl
1,入门
1.1.hello_window
创建一个800x600 的window;
1.2.hello_window_clear
利用glClearColor()/glclear() 设置窗口颜色;
2.1.hello_triangle
画一个三角形;
2.2.hello_triangle_indexed
用EBO 画一个三角形;
2.3.hello_triangle_exercise1
用画两个三角形表示一个矩形
2.4.hello_triangle_exercise2
分别用两个VAO/VBO画两个三角形表示一个矩形;
2.5.hello_triangle_exercise3
分别用两个VAO/VBO两个片段着色器 画两个三角型;一个三角形为橙色,一个三角形为黄色;
3.1.shaders_uniform
用Uniform 指定片段着色器输出颜色;
3.2.shaders_interpolation
用layout 方式将定点颜色数据传至着色器, 画个一个五彩颜色的三角形.
3.3.shaders_class
为了方便调用,新建sharder 类;
3.4.shaders_exercise1
将三角型顶点朝下;
3.5.shaders_exercise2
给三角形位置加个偏移;
3.6.shaders_exercise3
将顶点着色器的位置当成片段着色器颜色输出;
4.1.textures
加载一张纹理图片;
4.2.textures_combined
将纹理贴在箱子上;
4.3.textures_exercise1
将箱子上的纹理左右反向;
4.4.textures_exercise2
设置纹理坐标为0-2, 设置纹理绘制为repeat, 生成4个笑脸;
4.5.textures_exercise3
设置纹理坐标位于顶点坐标中间位置;
4.6.textures_exercise4
设置纹理合成透明值;
5.1.transformations
纹理旋转
5.2.transformations_exercise1
旋转+平移
5.2.transformations_exercise2
旋转+平移+缩放
6.1.coordinate_systems
model + view + projection 坐标系统
6.2.coordinate_systems_depth
立方体贴图,将一个箱子六个面都贴上纹理;
6.3.coordinate_systems_multiple
画十个立方体贴图;
6.4.coordinate_systems_exercise3
画十个立方体贴图,第三的倍数个时进行旋转;
7.2.camera_keyboard_dt
画出立方体贴图,通过按键可浏览不同贴图的位置;
7.3.camera_mouse_zoom
画出立方体贴图,通过鼠标可浏览不同角度位置并可缩放;
7.4.camera_class
定义camera 类,可从不同角度浏览立方体位置;
7.5.camera_exercise1
通过按键可改变浏览位置;
7.6.camera_exercise2
自定义lootAt 矩阵
2,光照:
1.colors
2.1.basic_lighting_diffuse
基础光照+漫反射
2.2.basic_lighting_specular
基础光照+漫反射+镜面光照
2.3.basic_lighting_exercise1
改变光源的位置
2.4.basic_lighting_exercise2
2.5.basic_lighting_exercise3
3.1.materials
不同材料对光的反射不同。
3.2.materials_exercise1
4.1.lighting_maps_diffuse_map
4.2.lighting_maps_specular_map
4.3.lighting_maps_exercise2
4.4.lighting_maps_exercise4
5.1.light_casters_directional
5.2.light_casters_point
5.3.light_casters_spot
5.4.light_casters_spot_soft
6.multiple_lights
6.multiple_lights_exercise1
3,模型:
1.model_loading
4,高级操作:
1.1.depth_testing,深度测试
1.2.depth_testing_view, 指定当目标像素小于当前像素, 绘制目标像素;
2.stencil_testing , 模板测试
3.1.blending_discard , 将多个纹理进行blending
3.2.blending_sort , 根据透明值进行blending
4.face_culling_exercise1
5.1.framebuffers , 将纹理绑定至framebuffer
5.2.framebuffers_exercise1 , 将纹理绑定至framebuffer
6.1.cubemaps_skybox , 天空盒
6.2.cubemaps_environment_mapping , 立方体贴图
8.advanced_glsl_ubo , uniform buffer object 多个着色器之间共享变量
9.1.geometry_shader_houses , 通过画三角形画出一个房子
9.2.geometry_shader_exploding
9.3.geometry_shader_normals
10.1.instancing_quads, 画多个重复的实例,glDrawArrayInstanced();
10.2.asteroids , 绘制小行星
10.3.asteroids_instanced
11.1.anti_aliasing_msaa , 抗锯齿
11.2.anti_aliasing_offscreen
5 高级光照:
1.advanced_lighting
2.gamma_correction
3.1.1.shadow_mapping_depth
3.1.2.shadow_mapping_base
3.1.3.shadow_mapping
3.2.1.point_shadows
3.2.2.point_shadows_soft
3.3.csm
4.normal_mapping
5.1.parallax_mapping
5.2.steep_parallax_mapping
5.3.parallax_occlusion_mapping
6.hdr
7.bloom
8.1.deferred_shading
8.2.deferred_shading_volumes
9.ssao
6,pbr:
1.1.lighting
1.2.lighting_textured
2.1.1.ibl_irradiance_conversion
2.1.2.ibl_irradiance
2.2.1.ibl_specular
2.2.2.ibl_specular_textured
7, in practice:
1.debugging
2.text_rendering
3.2d_game