OpenGL游戏制作之路[第二篇 游戏控件之按钮(5)]---2D游戏---(注:此版本作者处于探索阶段,希望能得到读者的指教和建议)

前言

前面几篇的那么的多铺垫,到现在终于能直接写我们期待的按钮了,有了前面的准备应该不难写了,先来设计一下。

正题

1.首先我准备了两种按钮图片。

第一张是正常显示的图片,第二张是鼠标放上去的效果。然后在加载目录文件中添加这两个文件的名字。

2.我发现按钮类暂时不用添加任何新东西,但是还是需要创建一个新的类来代表这个是按钮,我们将按钮在之前的GameWindow类中加载。然后是一些列的加载代码。

void GameWindow::gameInit()
{
		//按钮着色器
		button_test.setProgram(GLSTD_TOOLS::SHADER[0]);
		//按钮纹理
		button_test.addAnim(GLSTD_TOOLS::TEXTURE[6]);
		button_test.addAnim(GLSTD_TOOLS::TEXTURE[7]);
		button_test.setCover(0);
		//按钮顶点
		button_test.setMesh(GLSTD_TOOLS::VERTEX[0].VAO,GLSTD_TOOLS::VERTEX[0].zoom,GLSTD_TOOLS::VERTEX[0].size);
		//设置按钮位置
		button_test.setPos(vec3(200,200,0));
}

还没有写按钮资源的组合文件,这里现在是测试,就直接写死资源下标了。

在添加render函数,在里面写绘制按钮的代码。

void GameWindow::Render()
{
	button_test.draw();
}

这回我们的Run()函数就可以不用一直显示字符了。

void GameWindow::Run()
{
	GLSTD_TOOLS::loadTexture("icon//texture_file.rfi");
	GLSTD_TOOLS::loadVertex("vertex//vertex_file.rfi");
	GLSTD_TOOLS::loadShader("shader//shader_file.rfi");
	while(!glfwWindowShouldClose(window))
	{
		//渲染等函数
		//捕获事件
		glfwPollEvents();
		//清除绘制缓冲区
		glClear(GL_COLOR_BUFFER_BIT);
		//渲染
		Render();
		glfwSwapBuffers(window);
	}
}

这回可以编译一下看看了。

上次到现在我第一次编译的代码没有报错,也成功运行了,但什么都没有显示?

经过一系列的调试,我们最终看到了显示的按钮,现在来看,这还算不上一个按钮,只是一个图片而已。调试的时候用glGetError()函数,在你认为可能出错的GL函数后面或者某个代码段后调用,只要返回值不是0,就说明前面有错误。

经过几天的铺垫,我们终于看到了成果。

源码

本次的源码和文件

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值