第一个opengl程序

最近使用ffmpeg制作播放器,刚开始在自己的pc电脑中实现播放器的解码、yuv转RGB、图片的缩放、、、、、

一切看起来还算胜利,播放器最终能够很好的播放视频,以为可以松一口气了,当我将我的播放器交叉编译到

全志T3平台上(一款后视镜)发现播放视频时有点卡顿,经过一翻打印测试后发现,播放过程中丢帧比较严重,

导致这种现象的主要原因是由于在视频帧更新绘制时比较耗时(20ms),还有就是yuv数据转RGB数据时也比较

耗时,通过更改ffmpeg的处理算法最终由开始的120ms降低到32ms。但是实时性还是很低,于是考虑了使用

openGL,借助GPU的力量来提高效率,于是便开始了我openGL的学习之路。以下是自己折腾的第一程序

#include <GL/glut.h>

void display()
{	
	glClear(GL_COLOR_BUFFER_BIT);
	
	//注意是GL_LINES而不是GL_LINE,开始少了个s使得怎么都不出直线,还以为环境没弄好
	glBegin(GL_LINES);
        //指定顶点的命令必须包含在glBegin函数和glEnd函数之间,否则指定的点将被忽略
	glColor3f(1.0, 0, 0); //设置直线颜色
	glVertex3f(-1, 0, 0); //指定顶点
	glVertex3f(1, 0, 0);
        /* OpenGL 提供了一系列函数。它们都以 glVertex 开头,后面跟一个数字和 1~2 个字母。
         * 例如: glVertex2d、glVertex2f、glVertex3f、glVertex3fv等等。
         * 数字表示参数的个数,2 表示有两个参数,3 表示三个,4 表示四个。
         * 字母表示参数的类型,s 表示 16 位整数(OpenGL 中将这个类型定义为 GLshort),
         * i 表示 32 位整数(OpenGL 中将这个类型定义为 GLint 和 GLsizei),
         * f 表示 32 位浮点数(OpenGL 中将这个类型定义为 GLfloat 和 GLclampf),
         * d 表示 64 位浮点数(OpenGL 中将这个类型定义为 GLdouble 和 GLclampd)。
         * v 表示传递的几个参数将使用指针的方式*/
	glEnd();
        //保证前面的opengl命令立即执行而不是让它们在缓冲区中
	glFlush();
}

//以下代码比较固定
int main(int argc, char **argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
	glutInitWindowPosition(100, 100);
	glutInitWindowSize(400, 400);
	glutCreateWindow("opengl 3d view");
	glutDisplayFunc(display);
	glutMainLoop();

	return 0;
}


程序运行结果:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值