zoukankan      html  css  js  c++  java
  • 【OpenGL编程指南】之简介

      OpenGL是图形硬件的一种软件接口(API),包括了大约250个函数,利用这些函数可以指定物体和操作,创建交互性应用程序。它的设计目标就是作为一种流线型、独立于硬件的接口,在不同的硬件平台上实现。

      OpenGL对屏幕上的图像进行渲染主要执行以下操作:

    1. 根据几何图元创建形状,建立物体的数学描述(OpenGL把点、直线、多边形、图像和位图作为基本图元);
    2. 在三维空间中排列物体,选择观察场景的有利视角;
    3. 计算所有物体的颜色,影响颜色的因素包括指定颜色,光照条件,纹理贴图等;
    4. 将物体及其颜色转换为屏幕像素(这个过程称为光栅化);

     基本概念

    渲染是计算机根据模型创建图像的过程。

    模型是根据几何图元构造的,几何图元包括点、直线和多边形,他们是通过顶点(vertex)指定的。  

    像素是屏幕上放置的最小可视元素,像素最终构成屏幕上的渲染图像。

    位平面是像素信息在内存中的组织形式,它是一块内存区域,保存了像素的1个位的信息。

    帧缓冲区由位平面组织而成,保存了控制屏幕所有像素的颜色和强度信息。

    OpenGL是一个状态机,设置它的各种状态,若不修改则这些状态将一直生效。这次状态变量包括控制当前视图和投影变换、直线和多边形点画模式、多边形绘图模式、光照位置、物体材料属性等。

    OpenGL渲染管线

      

      几何数据经理的阶段包括求值器和顶点操作,而像素数据处理过程有所不同。这张图对OpenGL的渲染步骤有一个整体描述,不再细述。

     一些相关函数

      OpenGL工具函数库(GLU)利用低层函数执行诸如特定视图定向和投影设置矩阵等任务;

      所有窗口系统都提供了一个函数库,对窗口系统功能进行扩展,比如WGL函数对应着Windows到OpenGL的接口;

      OpenGL使用工具包(GLUT)是一个独立于窗口系统的工具包,因此不同窗口系统API的复杂性。主要包括以下一些函数:

    1. glutInit(int *argc, char **argv),对GLUT进行初始化,处理所有命令行参数;
    2. glutInitDisplayMode(unsigned int mode),指定使用RGBA还是颜色索引模式,单缓冲还是双缓冲,相关联的缓冲区等;
    3. glutInitWindowPosition(int x, int y)指定窗口左上角的位置;
    4. glutInitWindowSize(int width, int size)指定窗口大小;
    5. int glutCreateWindow(char *string)创建一个带有OpenGL渲染环节的窗口,为新窗口返回一个唯一的标识符; 
    6. glutDisplayFunc(* func)(voide)),一个事件回调函数,当GLUT确定一个窗口内容需要重新显示时,便会调用注册的那个函数;
    7. glutMainLoop(),进入主循环;
    8. glutReshapeFunc(void(* func) int w, int h))表示当窗口大小发生变化时应采取什么行动;
    9. glutKeyboardFunc(void(* func)(unsigned char key, int x, int y)),glutMouseFunc(void (*func)(int button, int state, int x, int y))挂接键盘和鼠标事件;
    10. glutMotionFunc(void(* func)(int x, int y)),注册一个函数,当鼠标按钮按下并移动鼠标时调用函数;
    11. glutIdleFunc(void(*func)(void)),注册一个函数,如果不存在其他尚未处理的事件时就执行这个函数;
  • 相关阅读:
    数据库服务器计数器
    性能测试之操作系统计数器分析方法
    性能测试之Windows常见性能计数器
    企业级 SpringCloud 教程 (三) 服务消费者(Feign)
    企业级 SpringCloud 教程 (二) 服务消费者(rest+ribbon)
    企业级 SpringCloud 教程 (一) 服务的注册与发现(Eureka)
    Spring Cloud构建微服务架构:服务容错保护(Hystrix断路器)
    Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)
    Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)
    Spring Cloud构建微服务架构:分布式配置中心
  • 原文地址:https://www.cnblogs.com/liustdelphi/p/2916456.html
Copyright © 2011-2022 走看看