OpenGL像素阵列函数

OpenGL中有两个函数可用于定义矩阵阵列的形状图案。一个是位图,另一个是像素图。

一、OpenGL位图函数

void glBitmap(GLsizei width,  GLsizei height,  GLfloat xorig,  GLfloat yorig,  GLfloat xmove,  GLfloat ymove,  const GLubyte * bitmap);

函数中的参数width和height分别给出阵列bitmap的列数和行数。bitmap的每一元赋值为0或1。值为1表示对应像素用前面设定的颜色显示;否则,对应像素不受该位图影响。参数xorig和yorig定义了矩形阵列“原点”的位置。原点位置指定为bitmap的左下角,而xorig和yorig可正可负。另外,需要指定帧缓存中应用图案的位置(当前光栅位置),而位图在将原点置于当前光栅位置后显示。赋给xmove和ymove的值用作位图显示后更新帧缓存当前光栅位置的坐标位移。

glRasterPos*()可设定当前光栅位置,参数和后缀码与glVertex*()函数中的一样。

1 GLubyte bitmap[20] = {
2     0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00,
3     0xff,  0x80, 0x7f,  0x00, 0x3e, 0x00, 0x1c, 0x00, 0x08, 0x00};
4 glPixelStorei(GL_UNPACK_ALLGNMENT, 1);
5
6 glRasterPos2i(30, 40);
7 glBitmap(9, 10, 0.0, 0.0, 20.0, 15.0, bitmap);

bitmap的阵列值从矩形网格的底部开始逐行指定。glPixelStorei设定位图的存储模式,第二个参数为1表明数据值用字节边界对齐。

二、OpenGL像素图函数

void glDrawPixels(GLsizei  width,  GLsizei  height,  GLenum  format,  GLenum  type,  const GLvoid *  data);

将彩色阵列定义的图案应用到一块帧缓存的像素位置。参数width和height分别给出像素位图data的列数和行数。参数format用一个OpenGL常量赋值,指出如何为阵列指定值。如,GL_BULE可指定全部像素为蓝色,GL_BRG可按蓝、红、绿依次指定颜色分量。参数type设定为OpenGL常量GL_BYTE、GL_INT和GL_FLOAT。

OpenGL提供若干个缓存,将某缓存选为glDrawPixel的目标即可将一个阵列送进缓存。有的缓存存放颜色值,有的存放另外的像素数据。例如,深度缓存用来存放对象离开观察位置的距离,而模板缓存用来存放场景的边界图案。glDrawPixels中的format参数可设定为GL_DEFTH_COMPONENT或GL_STENCIL_INDEX分别对应两种缓存模式。

OpenGL有4个颜色缓存用于屏幕刷新。两个颜色缓存用于立体显示中的左、右两个场景。对于立体显示缓存中的每一个,有用于动画显示的前~后一对双缓存。在OpenGL的特殊实现中,立体显示或双缓存之一、或者二者都得不到支持。若立体显示或双缓存都不支持,则仅有单一的刷新缓存用作前~左颜色缓存。这是在双缓存无效时的默认缓存。若双缓存有效,默认是后~左和后~右缓存或仅仅是后~左缓存,取决于立体观察的当前状态。

glDrawBuffer(buffer)可选择一个颜色的辅助或混合缓存来存储像素图。多种OpenGL符号常量可赋值给参数buffer,以指定一个或多个“绘图”缓存。例如,GL_FRONT_LEFT、GL_FRONT_RIGHT、GL_BACK_LEFT、GL_BACK_RIGHT来选定单一的缓存。使用GL_FRONT来选择两个前缓存,GL_BACK来选择两个后缓存。类似的,GL_LEFT或GL_RIGHT指定一对左缓存或一对右缓存,并且可以使用GL_FRONT_AND_BACK来选择所以可能的颜色缓存。辅助缓存通过常量GL_AUXk来选择,其中k是从0到3的整数,某些OpenGL实现中有多于4个辅助缓存。

时间: 2024-11-08 21:25:24

OpenGL像素阵列函数的相关文章

计算机图形学(二)输出图元_14_OpenGL像素阵列函数_1_位图函数

 OpenGL像素阵列函数 OpenGL中有两个函数可用于定义矩形阵列的形状或图案.一个是位图,另一个是像素图.OpenGL也提供若干的函数用于存储.复制及管理像素值阵列. OpenGL位图函数 下面的函数定义了一个二值的阵列: glBitmap (width, height, x0, y0, xOffset, yOffset, bitShape); 函数中的参数width和height分别给出阵列bitShape的列数和行数.bitShape的每一元素赋值为0或1.值为1表示对应像素用前面设定

计算机图形学(二)输出图元_2_ OpenGL画线函数

 OpenGL画线函数 图形软件包一般都提供一个描述一条或多条直线段的函数,其中每一直线段由两个端点坐标位置定义.在OpenGL中,和选择一个点位置一样,我们使用glVertex函数选择单个端点的坐标位置.我们使用一对glBegin/g1End来引入一串端点位置.有三个OpenGL符号常量可用于指定如何把这一串端点位置连接成一组直线段.默认情况下,每一符号常量显示白色实线. 使用图元线常量GL_LINES可连接每一对相邻端点而得到一组直线段.通常,这会导致一组未连接的线段,除非重复某些坐标位置.

[译]OpenGL像素缓冲区对象

目录概述创建PBO映射PBO例子:Streaming Texture Uploads with PBO例子:Asynchronous Readback with PBO 概述 OpenGL ARB_pixel_buffer_object 扩展与ARB_vertex_buffer_object.很相似.为了把像素数据你储存在缓冲区对象中,而非顶点数据,它简单地扩展了 ARB_vertex_buffer_object extension.储存像素数据的缓冲区对象称为Pixel Buffer Obje

Eclipse中通过Android模拟器调用OpenGL ES2.0函数操作步骤

原文地址: Eclipse中通过Android模拟器调用OpenGL ES2.0函数操作步骤 - 网络资源是无限的 - 博客频道 - CSDN.NET http://blog.csdn.net/fengbingchun/article/details/11192189   1.  先按照http://blog.csdn.net/fengbingchun/article/details/10439281中操作搭建好基本的Android开发环境: 2.  打开Eclipse,-->Window-->

RAM-Based Shift Register (ALTSHIFT_TAPS) IP Core-实现3X3像素阵列存储

最近想要实现CNN的FPGA加速处理,首先明确在CNN计算的过程中,因为卷积运算是最耗时间的,因此只要将卷积运算在FPGA上并行实现,即可完成部分运算的加速 那么对于卷积的FPGA实现首先要考虑的是卷积子模板具体如何实现,我们在matlab或者c实现比如3X3的子模板的时候,只要用一个数组即可将模板的数据存储起来,而在FPGA的话有以下三种方法: 用2个或3个RAM存储3X3像素阵列 用2个或3个FIFO存储3X3像素阵列 用shift_RAM移位存储3X3像素阵列 而shift_RAM好像就是

OpenGL 像素在内存中的排列方式

在OpenGL中所有和图像像素有关的API(包括glTexImage2D, glReadPixels等)第一个像素从左下角开始,从左到又一次排列,满了从下到上排列. 这个和Windows 下惯用的左上角开始的像素排列是上下颠倒的.所以使用glTexImage2D最后一个参数data,要注意你传进去的像素是左上角,还是左下角排列的. SDL的Surface是按Windows惯用的左上角开始排列的,所以你直接把SDL的Surface作为glTexImage2D的数据的时候,你会感觉UV坐标上下颠倒了

OpenGL的API函数使用手册

(一)OpenGL函数库 格式: <库前缀><根命令><可选的参数个数><可选的参数类型> 库前缀有 gl.glu.aux.glut.wgl.glx.agl 等等. 1.核心函数库主要可以分为以下几类函数 (1) 绘制基本的几何图元函数.如:glBegain(). (2) 矩阵操作.几何变换和投影变换的函数.如:矩阵入栈glPushMatrix(),还有矩阵的出栈.转载.相乘,此外还有几何变换函数glTranslate*(),投影变换函数glOrtho()和

API OpenGL输出土元函数及相关子程序

gluOrtho2D : 指定二维世界坐标系统 glVertex* : 选择一坐标位置.该函数必须放在glBegin/glEnd之间 glBegin(GL_POINTS) : 绘出一个或过个点,每个都在glVertex函数中指定.该端点串最后由glEnd语句来结束. glBegin(GL_LINES) : 显示一组直线段,其端点坐标在glVertex函数中指定.该端点串最后由glEnd语句来结束. glBegin(GL_LINE-STRIP) : 显示用于GL_LINES相同的结构所指定的折线

OpenGL像素缓冲对象(PBO)

免责申明(必读!):本翻译原稿来自以下链接,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! http://www.songho.ca/opengl/gl_pbo.html OpenGL的ARB_pixel_buffer_object 扩展非常接近ARB_vertex_buffer_object.它是为了将顶点数据(vertex data)和像素数据(Pixel data)存储在缓冲对象里面,简单的扩展了AR