当前位置:网站首页>shader学习笔记(五)

shader学习笔记(五)

2022-08-09 22:05:00 守着黎明看日出

使物体动起来
1.移动角色
顶点着色器不修改网格数据,而是通过修改物体顶点将绘制到屏幕上的位置来移动物体。现使用按键的按下和抬起状态控制角色的移动和停止。
需要注意的是draw是执行渲染逻辑的地方,每一帧需要发生但与创建绘制没用直接关系的逻辑应该放在update函数中。
ofGetLastFrameTime()函数返回从上一帧开始到此帧所经过的时间量。
ofAPP.cpp代码

void ofApp::keyPressed(int key){
    
	if (key == ofKey::OF_KEY_F5)
	{
    
		isMove = true;
	}
}
void ofApp::keyReleased(int key){
    
	if (key == ofKey::OF_KEY_F5)
	{
    
		isMove = false;
	}
}
void ofApp::update(){
    
	if (isMove) {
    
		float speed = 0.4*ofGetLastFrameTime();
		charPos += glm::vec3(speed,0,0);
	}
}
void ofApp::draw(){
    
//该方法省略了其他代码,仅显示修改部分
	spriteshader.begin();
	spriteshader.setUniformTexture("alienTex", img, 1);
	spriteshader.setUniform2f("offset", spriteFrame);
	spriteshader.setUniform2f("size", spriteSize);
	spriteshader.setUniform3f("walk", charPos);
	quad.draw();
	spriteshader.end();

在这里插入图片描述
在这里插入图片描述

原网站

版权声明
本文为[守着黎明看日出]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_35809258/article/details/122573648