使用openframeworks无需配置学习新版本opengl 之三 使用自带矩阵

最近还是想尽量快速完成这个系列,一是为了巩固和学习图形学知识,因为以前学习的理解有很多不到位也比较散碎

学习以http://bullteacher.com教程为主,辅以第八版opengl编程指南

希望在of上完整实现一遍可编程管线流程,接上一次博客http://blog.csdn.net/shenmifangke/article/details/51344689

使用of0.84 codeblocks版

注意openframeworks 没有鼠标滚轮事件

如果不改动的话,自己增加不了,如果很在意这个功能,可以用0.9以上的版本

github源码(注释比较乱,主要是因为和以前的理解出入比价大)

https://github.com/shenmifangke/openGL_openframeworks_learn3

主要是对这篇的实现http://bullteacher.com/9-coordinate-systems.html


文中采用的GLM库,但是我觉得还是配置麻烦,

因为学个图像编程还要装这么多外部库,很容易就掉其他坑里的,所以这也是我用of开这个系列的原因

这里使用of自带的ofMatrix4x4来替换glm库里的mat4

具体代码可以参考上面github地址,这次放上了编译的exe

下面是最终效果图


下面是基本用法,projection即可理解为最终的变换矩阵

ofMatrix4x4 model = ofMatrix4x4();
ofMatrix4x4 view = ofMatrix4x4();
ofMatrix4x4 projection = ofMatrix4x4();
model.rotate(-55.0f,1.0f, 0.0f, 0.0f);
view.translate(0.0f, 0.0f, -3.0f);
projection.makePerspectiveMatrix(45.0f,(float)ofGetWidth()/(float)ofGetHeight(), 0.1f, 100.0f);

矩阵传递到shader可以使用ofMatrix4x4的getPtr方式

GLint viewLoc = glGetUniformLocation(shader_programme, "view");
glUniformMatrix4fv(viewLoc, 1, GL_FALSE, view.getPtr());
下面是两个着色器代码

frag

#version 330 core 
in vec3 ourColor;
in vec2 TexCoord;//新增的纹理
out vec4 color; 
uniform sampler2D ourTexture1;//新增的纹理采样器
uniform sampler2D ourTexture2;//第二个纹理
void main() 
{ 
//图片混合
color = mix(texture(ourTexture1, TexCoord), texture(ourTexture2, TexCoord), 0.6);
}

vertex

#version 330 core 
layout (location = 0) in vec3 position; // 位置变量的属性position为 0 
layout (location = 2) in vec2 texCoord;//新增的纹理

out vec2 TexCoord;//新增的纹理
 

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
 
void main() 
{ 
	gl_Position = projection * view * model * vec4(position, 1.0f);
	TexCoord = texCoord;//新增的纹理
}


主要代码还是参看github上的,因为写得比较凌乱,(因为最近工作比较凌乱……)

希望喜欢这个系列或者对图像学特效独立游戏等等感兴趣的联系或者和我讨论





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值