随笔分类 -  OpenGL

纹理旋转
摘要:ue3有个纹理动画的教程,在一个四边形上画个不停转动的风车。可以通过改变纹理坐标来实现这功能。由于四边形的纹理坐标[0,0]在左上角,直接对其进行旋转肯定达不到想要的效果。因此问题的关键是寻找任意中心点的旋转矩阵,这里需要选取[0.5,0.5]作为中心点。先将[0.5,0.5]移动到[0,0],得出平移矩阵m11 0 -0.50 1 -0.50 0 1然后执行旋转,得出旋转矩阵m2cos(a) -sin(a) 0sin(a) cos(a) 01 0 1将[0,0]移回[0.5,0.5],得出平移矩阵m31 0 0.50 1 0.50 0 1将结果连接就行了m3*m2*m1*v注意GL中采用的是 阅读全文

posted @ 2013-04-05 16:32 SoMiSoDo 阅读(408) 评论(0) 推荐(0)

UBO笔记
摘要:UBO的引入对渲染引擎的影响比较大。const char *VertexShaderSource= "void main()" "{" " gl_Position=ftransform();" "}";const char* FragmentShaderSource= "layout(std140) uniform material" "{" " vec4 ambient;" " vec4 diffuse;" " float 阅读全文

posted @ 2013-01-15 14:21 SoMiSoDo 阅读(1078) 评论(0) 推荐(0)

Opengl实现法线贴图
摘要:法线贴图是一项很古老的技术了,但凭借其高性价比的优势将会长期存在各渲染器中。未完待续。。。 阅读全文

posted @ 2012-12-18 14:24 SoMiSoDo 阅读(1538) 评论(0) 推荐(0)

opengl投影变换与逆变换
摘要:一个新手都在问的:opengl中如何将2d窗口坐标转换为3d空间坐标。以下是测试代码,需用到glm库。#include <string>#include <cstdlib>#include <iostream>#include <glm/glm.hpp>#include <glm/ext.hpp>using namespace std;using namespace glm;void print(const vec4& v) { cout << v[0] << " " << 阅读全文

posted @ 2012-12-10 10:59 SoMiSoDo 阅读(4003) 评论(0) 推荐(0)

opengl中VAO,VBO,IBO用法小结
摘要:这三个玩意全面取代旧社会的glBegin/glEnd,显示列表,顶点数组。VBO为顶点缓冲区对象,用于存储顶点坐标/顶点uv/顶点法线/顶点颜色,也可以用于其他用途,比如tangent。IBO为索引缓冲区,里面的值可以是unsigned int或者unsigned short。最后用VAO将多个VBO,IBO绑定到一起。一个常规的网格模型就是VAO.attach(PositionVBO,TexcoordVBO,NormalVBO,IBO)以下为VBO的创建,分配100字节的空间,未初始化:GLuint vbo;glGenBuffers(1, &vbo);glBindBuffer(GL_ 阅读全文

posted @ 2012-12-07 14:44 SoMiSoDo 阅读(12067) 评论(3) 推荐(2)

导航