opengl纹理映射的学习总结

2023-11-16

 1.不同的滤波方式的效果区别

使用Nearest滤波纹理的效果:看起来很斑驳

使用MipMapped的效果:看起来很平滑

 

2.

void glTexImage1D

 (GLenum  

 target,

 

GLint  

level,

 

GLint  

internalFormat,

 

GLsizei  

width,

 

GLint  

border,

 

GLenum  

format,

 

GLenum  

type,

 

const GLvoid *  

data);

 

void glTexImage2D(

GLenum  

target,

 

GLint  

level,

 

GLint  

internalFormat,

 

GLsizei  

width,

 

GLsizei  

height,

 

GLint  

border,

 

GLenum  

format,

 

GLenum  

type,

 

const GLvoid *  

data);


   

void glTexImage3D(

GLenum  

target,

 

GLint  

level,

 

GLint  

internalFormat,

                      

GLsizei

width,

GLsizei

height,

 

GLsizei  

depth

 

GLint  

border,

 

GLenum  

format,

 

GLenum  

type,

 

const GLvoid *  

data);

 


这三个opengl函数用于从一个类存缓冲加载纹理数据,它们告诉了opengl如何解析data参数所指向的纹理数据。Opengl从data所指向的位置复制纹理信息,这种数据复制的代价是很高的。

九个参数:

(1).      target

对应了GL_TEXTURE_1D或者GL_TEXTURE_2D或者GL_TEXTURE_3D

 

(2).      internalFormat

GL_ALPHA              按照alpha值来存储纹理单元

GL_LUMINANCE          按照亮度值来存储纹理单元

GL_LUMINANCE_ALPHA    按照亮度和alpha值来存储纹理单元

GL_RGB                 按照RGB成分存储纹理单元

GL_RGBA                按照RGBA成分来存储纹理单元

 

(3.)      width, height, depth指定被加载纹理的宽度,高度,深度。这些值必须是2的指数。并不要求三维都相等。避免使用非2的整数次方的纹理。

 

(4).      border边界允许我们对边界处的纹理进行设置,对它的宽度,高度深度进行扩展。对纹理过滤的处理中,纹理边界扮演了重要的角色。

 

(5). format

GL_RGB                

GL_RGBA 

GL_BGR

GL_BGRA

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA              

GL_LUMINANCE          

GL_LUMINANCE_ALPHA  

GL_STENCIL_INDEX              每个像素包含单一的模板索引

GL_DEPTH_COMPONENT         每个像素包含单一的深度成分

 

(6). type

 GL_UNSIGNED_BYTE            每种颜色的成分是8个无符号整数

 GL_BYTE

GL_BITMAP                   单个位、无颜色数据,和glBitmap相同

GL_UNSIGNED_SHORT

GL_SHORT

GL_UNSIGNED_INT

GL_INT

GL_FLOAT

CL_UNSIGNED_BYTE_3_2_2        经过包装的RGB


通过glTexImage函数所加载的纹理数据将经历(与像素和图像处理管线相同的)过程:像素包装,像素缩放,颜色表,积卷等操作

3.

void glTexSubImage2D(

GLenum  

target,

 

GLint  

level,

 

GLint  

xoffset,

 

GLint  

yoffset,

 

GLsizei  

width,

 

GLsizei  

height,

 

GLenum  

format,

 

GLenum  

type,

 

const GLvoid *  

data);

这个函数用于更新纹理,如果一个已经加载的纹理不再需要,可以被替换,可以全部替换也可以只替换一部分,替换的一个纹理图往往比glTexImage加载一个新纹理要快。Width和height只能是替换纹理真实的大小,如果对width和height的值进行改变会导致替换纹理失真。如果原纹理的大小和替换纹理的大小相同,原纹理将完全被替换。如果原纹理比替换纹理还小将看不到替换效果。如果原纹理比替换纹理大将替换原纹理的一部分,1/4、1/8…..


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opengl纹理映射的学习总结 的相关文章

  • 如何绘制这样的自定义颤动边框?

    我想要有关如何实现自定义边框的想法 如下图所示 我制造了一个CustomPainter绘制形状 class MyPainter extends CustomPainter Color color MyPainter required thi
  • 使用 Cp500 编码陌生事物(LF 和 NEL)

    最近 在从字节转换为字符串 然后再从字符串转换为字节的过程中 我遇到了 Cp500 EBCDIC 编码的奇怪问题 问题在于一个特定的角色就是在这个转变过程中 被转变为这个角色 下面的代码验证了这一点 byte b25 0x25 byte b
  • 在 Swift 中将 bytes/UInt8 数组转换为 Int

    如何将4字节数组转换为对应的Int let array UInt8 gt let value Int Example Input 0 0 0 x0e Output 14 我在互联网上找到的一些代码不起作用 let data NSData b
  • boto3 S3 对象解析

    我正在尝试编写一个 Python 脚本来处理存储在 S3 上的音频数据 我有一个 S3 对象 我正在使用它调用 def grabAudio filename directory obj s3client get object Bucket
  • 调整标题元素底部边框的大小以适应文本宽度并具有响应能力

    我想让底部边框更窄并且响应灵敏 同时保持文本居中 我怎样才能做到这一点 我尝试显式使用 width 属性 但这显然不起作用 DEMO https www bootply com jEB0e4Ao61 https www bootply co
  • PaintComponent() 正在其他组件上绘图

    我正在使用基于中的代码的自定义类这个答案 https stackoverflow com a 16909994 5686799 绘制一个形状像讲话泡泡的背景 每当我将应用程序的窗口大小调整到足以使组件在顶部或底部突出时 该组件的轮廓就会绘制
  • CSS 中的圆帽下划线

    你能用 CSS 制作圆形下划线 如上图所示 吗 如何 有没有办法做到这一点border bottom border radius相反 会产生这种时尚的效果 编辑 我误解了皮克想要什么 但这应该有效 test font size 50px b
  • 设置字节中的特定位

    我正在尝试设置 Java 字节变量中的位 它确实提供了适当的方法 例如 setBit i 有谁知道我如何才能实现这一点 我可以按位迭代给定的字节 if my byte 1 lt lt i 0 但是我不能将此位置设置为 1 或 0 可以吗 使
  • 为“facet_wrap”中的每列创建边框和标题

    我想在每个方面周围放置带有标签和标题的黑色边框facet wrap 与此类似的东西 样本数据 library tidyverse mtcars gt mutate gear factor gear levels c 4 3 5 gt ggp
  • 如何在python中附加两个字节?

    说你有b x04 and b x00 你如何将它们组合起来b x0400 使用Python 3 gt gt gt a b x04 gt gt gt b b x00 gt gt gt a b b x04 x00
  • R 中图周围的圆形边框

    我需要在情节周围放置平滑的边框 代码 plot 0 10 0 10 type n xlab X ylab Y box figure col blue 除了简单的蓝线 我如何放置带有圆角的平滑灰线 非常感谢 library grid plot
  • Python 中的字节数组

    如何在 Python 中表示字节数组 如 Java 中的 byte 我需要用 gevent 通过网络发送它 byte key 0x13 0x00 0x00 0x00 0x08 0x00 在Python 3中 我们使用bytes对象 也称为s
  • 在C中提取字节

    我正在用 C 编写一个程序 我要提取字节 un8 extractbyte int r int pos 应该从数字 r 返回字节数 pos 例如 我使用作为输入 0x7788AABB 那么输出应该是 零件号 0 是 BB零件号 1 是 AA零
  • 重置输入控件的边框颜色 (HTML/Javascript)

    有谁知道使用 javascript 修改输入控件后如何重置它的边框颜色 通过突出显示其中包含不正确或无效数据的字段等来进行验证非常有用 例如 改变边框 document getElementById myinput style border
  • 更改边框宽度时如何防止移动

    这是一把小提琴 http jsfiddle net 86juF 1 http jsfiddle net 86juF 1 如何防止元素在点击时出现移动 元素通常具有 1 像素边框 但单击时会变为 2 像素边框 在小提琴中你会看到这个CSS o
  • JButton 在其边框和按钮本身之间有填充

    我有一个 JButton 其背景为绿色 边框为 LineBorder 我想在按钮和边框之间插入一个空格 一种填充 我尝试过 setMargin new Insets x y t z 但它似乎不起作用 这是我的一段代码 JButton JBt
  • 将可见性属性绑定到变量

    我有一个Border with Label里面一个Window
  • JPanel 上的圆形边框

    我这里得到的是一个带有圆形边框的 JPanel 其设置如下 panel setBorder new LineBorder PanelColor 5 true 问题是 在每个角上都有 2 条从外角到内角的对角不透明线 即边框的长度 边界后面的
  • 如何在 android 相对布局周围放置边框?

    我见过这个subject https stackoverflow com questions 3182723 android draw custom border around listview关于在 android textview 周围
  • 当字符串的长度大于n时,如何打印字符串的前n个字节?

    所以我有一个具有一定字节数 或长度 的字符串 我说字节是因为字符串末尾没有 NULL 终止符 不过 我知道绳子有多长 通常 众所周知 当您printf s str 它将继续打印每个字节 直到到达 NULL 字符 我知道没有 C 字符串不是

随机推荐