Linux OpenGL 实践篇-1

本次实践所使用环境为CentOS 7。

参考:http://www.xuebuyuan.com/1472808.html

OpenGL开发环境搭建:

1.opengl库安装

  opengl库使用mesa库,安装命令:

  yum intall mesa*

  mesa库是一个开源的三维计算机图形库,以开源的形式实现了opengl应用程序接口。具体介绍:https://www.mesa3d.org/intro.html。

2.glut安装

  下载freeglut,下载地址为: https://github.com/dcnieho/FreeGLUT/releases。glut是opengl的实用工具库,opengl只是三维图形接口,并没有窗口,处理鼠标等设备输入输出方面的内容,glut提供了相关方面的内容。freeglut是glut的一个发行版本(还有一个是原始版本的glut)。

  因为我使用cmake安装,根据README.cmake中步骤及注意事项安装。

  命令:

  cmake .

  make

  make install

3.简单例子

新建文件main.cpp

#include <GL/glut.h>
#include <stdlib.h>
void init();
void display();

int main(int argc, char* argv[])
{
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
        glutInitWindowPosition(0, 0);
        glutInitWindowSize(300, 300);

        glutCreateWindow("OpenGL 3D View");

        init();
        glutDisplayFunc(display);

        glutMainLoop();
        return 0;
}

void init()
{
        glClearColor(0.0, 0.0, 0.0, 0.0);
        glMatrixMode(GL_PROJECTION);
        glOrtho(-5, 5, -5, 5, 5, 15);
        glMatrixMode(GL_MODELVIEW);
        gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
}

void display()
{
        glClear(GL_COLOR_BUFFER_BIT);

        glColor3f(1.0, 0, 0);
        glutWireTeapot(3);

        glFlush();
}

编译命令:

gcc -lglut -lGLU -lGL main.cpp

原文地址:https://www.cnblogs.com/xin-lover/p/8367639.html

时间: 2024-10-08 10:19:32

Linux OpenGL 实践篇-1的相关文章

Linux OpenGL 实践篇-3 framebuffer

GLEW说明 GLEW(OpenGL Extension Wrangler) 是OpenGL的另一个辅助库,主要封装了从OpenGL库中获取函数地址的过程,还包含了一些可以跨平台使用的OpenGL编程方法. 本次实践是使用数据缓存绘制两个三角形,重点是缓存的创建和数据输入.数据输入后,根据数据使用方式可分为非基于索引绘制和基于索引绘制,使用的方法分别为glDrawArray和glDrayElements. 首先,明确OpenGL缓存使用步骤: glGenBuffer glBindBuffer g

Linux OpenGL 实践篇-2 创建一个窗口

OpenGL 作为一个图形接口,并没有包含窗口的相关内容,但OpenGL使用必须依赖窗口,即必须在窗口中绘制.这就要求我们必须了解一种窗口系统,但不同的操作系统提供的创建窗口的API都不相同,如果我们在学习OpenGL时要去学习一整套的窗口系统,这将带来很多的不便,所以出现了GLUT.GLUT全称OpenGL Utility Toolkit,是一套和窗口系统无关的软件包,为我们提供了窗口创建,用户输入输出处理等功能.优点是:简小,精悍.注意GLUT并不是一个功能特别全面的窗口系统工具包,所以构建

Linux OpenGL 实践篇-6 光照

经典光照模型 经典光照模型通过单独计算光源成分得到综合光照效果,然后添加到物体表面特定点,这些成分包括:环境光.漫反射光.镜面光. 环境光:是指不是来特定方向的光,在经典光照模型中基本是个常量. 漫反射光:是散射在各个方向上均匀的表面特定光源.物体表面通过光照照亮,即使这个表面没有将光源直接反射到你的眼睛中.漫反射与眼睛的方向没有关系,但与光源的方向有关,当表面直接面向光源的时候会表现的亮一些,而倾斜的时候则暗一些,因为在现实中倾斜的表面接受的光要少一些.在经典光照模型中,我们使用表面的法向量来

Linux OpenGL 实践篇-9 模型

之前一直渲染箱子,显得有点单调.这一次我们绘制一个用艺术家事先用建模工具创建的模型. 本次实践参考:https://learnopengl-cn.github.io/03%20Model%20Loading/01%20Assimp/ 在之前我们的OpenGL实践中,绘制图形的过程是先定义顶点的位置.法线.纹理坐标(UV)等信息,按一定的规则组织后传给着色器处理,最终绘制到屏幕上.现在使用艺术家构建的模型,绘制的过程并没有变,只不过顶点和使用的贴图信息从原来我们自己定义变为从已构建好的模型中提取,

Linux OpenGL 实践篇-12-ProceduralTexturing

程序式纹理 简单的来说程序式纹理就是用数学公式描述物体表面的纹路 .而实现这个过程的着色器我们称之为程序纹理着色器,通常在这类着色器中我们能使用的输入信息也就是顶点坐标和纹理坐标. 程序式纹理的优点 1.程序式纹理的内存占用比预存纹理要低的多:因为程序式纹理主要是算法的实现,数据都是通过计算产生的: 2.程序生成的纹理没有固定的面积和分辨率,可以随意的应用到不同大小的物体,而不用担心精度不够的问题: 3.程序式纹理可以写入一些算法的关键参数,可以方便的供程序修改从而创建出有趣的效果,而预存的纹理

Linux OpenGL 实践篇-14-多实例渲染

多实例渲染 OpenGL的多实例渲染是一种连续执行多条相同的渲染命令的方法,并且每条命令产生的结果都有轻微的差异,通常用于渲染大量的几何物体. 设想一个场景,比如太空,我们需要渲染数以万记的星球,如果我们使用常规的做法,渲染的过程应该是是:绘制第一个星球glBindVertexArray--glDrawArrays或glDrawElements,然后使用同样的流程绘制其它的星球.但这种方式非常容易达到计算机的性能瓶颈,就算是渲染的物体是最简单的面片,因为在绘制的整个过程中,绘制物体的时间其实非常

Linux 3D 编程学习总结

Linux下应用OGRE开发3D linux下应用OGRE开发3D的资料网上很少,今天抽空整理一下. 大部分内容参考OGRE主页http://www.ogre3d.org/. 首先根据主页提示,我们可以利用已有资源构建一个工程,具体步骤如下: 第一步,准备工作,确定你是在linux环境下,进入终端,输入一下命令: 编译和配置 sudo apt-get install build-essential automake libtool 需要的依赖 sudo apt-get install libfr

pymongo 将vmstat数据插入到mongodb

#!/usr/bin/env python #-*-encoding:utf-8 -*- import subprocess def gen_vmlog(cmd): result = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE) return result.stdout.read() def conn_mongo(host,port): from pymongo import MongoClient client = MongoC

Ubuntu18.04安装 NVIDIA驱动

参考自博客:https://blog.csdn.net/jsjason1/article/details/88086904 我确定这篇文章是否很有必要,我最开始的时候,按照这篇文章所述,重新安装了NVIDIA驱动,但是后来以为 CUDA与TensorFlow的版本问题,选择了软件更新管理器中附加驱动里的专有驱动(nvidia-driver-390),然后后续安装成功没再进行测试,但可以肯定,因为本文章是带领着安装最新的官方NVIDIA驱动,所以,支持的CUDA版本也较高,我当时看到信息中支持的C