opengl教程 linux,Ubuntu 16.04配置OpenGL教程

命令:

sudo apt-get install build-essential

sudo apt-get install libgl1-mesa-dev

sudo apt-get install libglu1-mesa-dev

sudo apt-get install freeglut3-dev

网上有些教程最后一步是sudo apt-get install libglut-dev,但是会报错Unable to locate package libglut-dev,搜索错误信息后搜到stackoverflow上有人问这个问题,推荐安装freeglut3-dev

01c9de33e52f41be7c964c38cd85e7bc.png

头文件和动态库文件(libGLU.so libGL.so libglut.so)分别如上图

我用了YouCompleteMe插件,于是把ycm配置文件拷到了OpenGL程序的根目录下

cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py ~/opengl/

然后打开python配置文件,在flags末尾中加上,这样就可以自动补全OpenGL的函数了

9fef96f62dee588afd86683b5ebb9903.png

然后在网上找个OpenGL的示例代码

// File Name: example.cpp

#include

void draw()

{

glClearColor(1, 0, 0, 1);

glClear(GL_COLOR_BUFFER_BIT);

glFlush();

}

int main(int argc, char** argv)

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

glutInitWindowPosition(100, 100);

glutInitWindowSize(300, 300);

glutCreateWindow("My First OpenGL Program");

glutDisplayFunc(draw);

glutMainLoop();

return 0;

}

其实代码都挺好理解,glut是前缀,后面的函数名很直观。

简单的代码只需要改下关键的draw函数,因此我用bash写了个OpenGL代码模板生成器

#!/bin/bash

# File Name: opengl.sh

# Created Time: Thu 02 Mar 2017 06:48:03 AM PST

if [ $# -lt 1 ]; then

echo "usage: ./opengl.sh "

exit 1

fi

FileName=$1

# 若文件存在则直接打开, 不删除原来文件

if [ -e $FileName ]; then

vim $FileName

exit 1

fi

# 生成OpenGL框架

echo "// File Name: $FileName" >> $FileName

echo "#include " >> $FileName

echo "" >> $FileName

echo "void draw()" >> $FileName

echo "{" >> $FileName

echo -e "\t" >> $FileName

echo "}" >> $FileName

echo "" >> $FileName

echo "int main(int argc, char** argv)" >> $FileName

echo "{" >> $FileName

echo -e "\tglutInit(&argc, argv);" >> $FileName

echo -e "\tglutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);" >> $FileName

echo -e "\tglutInitWindowPosition(100, 100);" >> $FileName

echo -e "\tglutInitWindowSize(300, 300);" >> $FileName

echo -e "\tglutCreateWindow(\"My First OpenGL Program\");" >> $FileName

echo -e "\tglutDisplayFunc(draw);" >> $FileName

echo -e "\tglutMainLoop();" >> $FileName

echo -e "\treturn 0;" >> $FileName

echo "}" >> $FileName

vim $FileName +6 # 打开时直接跳转到draw()函数中那一行

exit 0

可以先把代码复制进去在写echo时可以调用vim命令批量添加TAB

:28,33s/^\(.*\)$/echo -e "\\t\1"/g

比如我这句就是在28行到33行(行首无空格或tab键)用echo -e ""把代码放在引号里

:17,34s/\(.*\)/\1 >> $FileName/g

17行到34行末尾添加 >> $FileName重定向输入到文件中,之前是用标准输出查看echo是否正确。

然后我又想把这个弄成系统命令,发现应该没有哪个程序叫gl,于是我就写个C++程序调用opengl.sh然后都放在bin目录下。

// File Name: gl.cpp

#include

#include

#include

int main(int argc, char** argv)

{

if (argc < 2) {

fprintf(stderr, "usage: gl \n");

exit(1);

}

std::string cmd = "./opengl.sh ";

cmd.append(argv[1]);

system(cmd.c_str());

return 0;

}

命令

g++ gl.cpp -o gl

sudo cp gl opengl.sh /bin/

然后就可以使用命令gl test.cpp来创建OpenGL代码模板了,而且想要修改的时候只用修改opengl.sh就行,不需要重新编译cpp

00c93be280fbce7da469f775288c9262.png

发现自己越来越喜欢Linux编程环境了,命令行真的超级棒!最近用VS写代码时都不太习惯了。虽然也有快捷键,比如Ctrl+Shift+H打开全局替换窗口,但是真的不如vim命令模式下直接正则替换方便。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值