繁体   English   中英

没有OpenGL的纹理贴图

[英]Texture Mapping without OpenGL

因此,我应该对我加载到场景中的特定模型(使用帧缓冲区和平面针孔相机)进行纹理映射,但是我不允许使用OpenGL,否则我不知道该怎么做(我们确实将glDrawPixels用于其他功能,但这是我们可以使用的唯一功能)。

这里有没有足够的能力让我了解如何在没有OpenGL功能的情况下进行纹理贴图?

我应该使用以下幻灯片: https : //www.cs.purdue.edu/cgvlab/courses/334/Fall_2014/Lectures/TMapping.pdf

但是它们对我来说意义不大。

到目前为止,我收集的是以下内容:

您遍历一个模型,并为每个三角形分配“纹理坐标”(我不确定它们是什么),然后使用“模型空间插值”(同样,我不知道这是什么)来应用纹理正确的角度来看。

目前,我的程序正在执行以下操作:

茶壶

TL; DR:1.什么是模型空间插值/我该怎么做? 2.纹理坐标明确是什么? 3.在不使用OpenGL的情况下,如何在较高水平上(以通俗的术语来说)对模型进行纹理映射。

好的,让我们首先确保我们都在同一页上讨论颜色插值的工作方式。 第125到143行设置了三个矢量redABCgreenABCblueABC ,用于在三角形上插值颜色。 它们一次工作一个颜色分量,并且三个向量中的每一个都有助于内插一个颜色分量。

按照惯例,s,t坐标位于源纹理空间中。 如网格数据中所提供的,它们指定三角形的特定顶点在纹理内的位置。 要理解的关键是, 像颜色一样,需要在三角形上插补s,t坐标

因此,您想要做的是再设置两个ABC向量: sABCtABC ,精确地复制用于设置redABC的逻辑,但是您不必使用每个顶点的颜色分量,而只需使用每个顶点的s,t坐标顶点。 然后,对于每个像素,而不是将ssiRed等计算为unsigned int值,而是将ssisssit计算为float,假设您的源s,t值表现良好,则它们应在0.0f1.0f的范围内。

现在你有一个插S,T坐标,乘ssis由纹理的纹理像素宽度, ssit通过纹理像素的高度,并使用这些坐标来获取纹理像素。 然后将其放在屏幕上。

由于您未使用OpenGL,所以我假设您编写了自己的软件渲染器来渲染茶壶?

纹理只是图像。 纹理坐标是纹理中的2D位置。 因此(0,0)在左下角,而(1,1)在右上角。 对于3D模型的每个顶点,应在纹理中存储2D位置(u,v)。 这意味着在那个顶点上,您应该使用该点纹理的颜色。

要了解顶点之间的像素的UV纹理坐标,您需要在其周围插入顶点的纹理坐标。 然后,您可以使用该UV查找纹理中的颜色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM