问题标签 [texturing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opengl - 如何在 OpenGL 中使用 TexSubImage 将纹理数据上传到稀疏纹理?
我在 github 上关注 apitest,并在我的渲染器中看到一些非常奇怪的行为。
虚拟页面似乎没有收到正确的图像数据。
原始图像为 500x311:
当我使用稀疏纹理渲染此图像时,我必须将后备存储的大小调整为 512x384(作为页面大小的倍数),我的结果是:
如您所见,看起来子图像的一部分(子子图像)已加载到每个单独的虚拟页面。
为了测试这一点,我将图像裁剪为只有 1 个虚拟页面 (256x128) 的大小:结果如下:
正如预期的那样,单个虚拟页面充满了精确、正确、裁剪的图像。
最后,我将裁剪大小增加到 2 个虚拟页面,256x256,一个在另一个之上。结果如下:
这证明使用大于 Virtual_Page_Size 的 texelData 量调用 texSubimage 会导致错误。
将数据传递给大于虚拟页面大小的 glsubimage 时是否需要小心?我在 apitest 中看不到这方面的逻辑,所以认为这可能是驱动程序问题。或者我错过了一些重要的东西。
这是一些代码:
我将纹理存储在纹理数组中,为了简化,将数组变成了一个纹理 2d。两者都产生相同的确切结果。这是纹理内存分配:
以下是分配后发生的情况:
我尝试将宽度和高度设置为后备存储的物理宽度以及传入图像内容的宽度/高度。两者都不会产生预期的结果。我暂时排除 mip 级别。当我使用 Mip 级别和纹理数组时,我得到了不同的结果,但行为相似。
此外,图像是从 SOIL 加载的,在我实现稀疏纹理之前,效果很好(在稀疏之前我实现了无绑定)。
c++ - 为什么我的纹理在我的 openGL 渲染器中显示为分形图案?
我正在使用openGL获取纹理来渲染。我是那里的一部分并且卡住了。
我的目标是得到这张照片:http: //i.imgur.com/d3kZTsn.png
这就是我所在的位置:http: //i.imgur.com/uAV8q0W.png
有没有人见过这个问题?
python - 通过 Python 在 Maya 中更改多边形的颜色
我知道的唯一方法是使用滑块:
然后从中获取RGB值:
然后将材质分配给多边形并赋予该材质颜色:
有没有更简单的方法而不使用滑块和/或不分配材料?
unity3d - Blender 到 Unity3D 的纹理问题
我正在为游戏制作模型,为了让它们看起来有点像全息图,我在里面给了它们透明的纹理和线框。出于某种原因,当我将它们导出到 Unity3D 时,它们显示为完全白色,没有线框。
我曾尝试以 FBX 和 .blend 的形式导出。
c++ - 如何在 OpenGL 中将两个不同的图像渲染为两个不同的图元?二维纹理数组?
所以我有一个简单的 OpenGL 查看器,您可以在其中绘制用户想要的任意数量的框。Ive 还添加了获取 PNG 或 JPG 图像并将其纹理映射到图元的功能。
我希望能够让用户在屏幕上指定任何立方体并向它们应用不同的纹理。我对 OpenGL 相当陌生。现在我可以轻松地将图像映射到单个基元,但我想知道将 2 个单独的图像(可能是不同的大小)映射到 2 个单独的基元的最佳方法是什么。
我已经对 2D 纹理数组进行了大量阅读,这似乎是我想要的方式,因为我可以在一个纹理单元中存储多个纹理,但考虑到我上面提到的内容,我不确定这是否可能. 如果图像都是不同的尺寸,那么我认为我不能这样做(至少我不这么认为)。我知道我可以将每个图像存储到单独的纹理单元中,但是在数组中执行它似乎是更简洁的方式。
最好的方法是什么?您实际上可以将不同大小的图像存储到二维纹理数组中吗?如果是这样怎么办?还是我最好将它们存储在单独的纹理单元中?
python - OpenGL - 渲染一个带纹理的茶壶 - .obj 面和法线
我有一个只有v和f参数的.obj文件。
我有一个任务,通过将它“封闭”在一个长方体中(由每个轴上的最大和最小顶点定义)来纹理化它,计算它的中心,然后将茶壶顶点的空间坐标与中心坐标相除,这样我就得到了向量以茶壶的中心为起点,以茶壶的表面为终点,然后找到这些向量(射线)与外部长方体表面相交的位置。长方体的每个面都必须模拟一个图像。之后,我必须计算每个顶点的纹理坐标——只需从 3D 交点获取 2D 参数,然后对结果进行归一化,使它们位于 0 和 1 之间(二维)。
所以,我用一些适当的代码行打开 .obj 文件,然后我进行所有描述的计算以找到 vt 参数,然后使用一个函数,该函数允许我使用构成三角形的索引顶点列表获取 NORMALS(面对属性)和一个顶点列表。
看起来像这样(实际上它由两个函数组成,在两个不同的文件中):
1)
其中 self.arrs[0] 是从 .obj 获取的 v 属性列表,而 tind 是构成面的顶点的 3 个元素列表的列表。
2)
其中“norm”是线性代数 NumPy 集中的一个函数。
之后,我创建了一个 VOB 对象:
简而言之,我使用 VOB 对象将其发送到 GPU。
vert - 从 .obj 获取的顶点列表 point - 以上述方式计算的纹理坐标列表 normals - 使用上述函数计算的法线向量列表 self.obj.indx - 由来自 .obj 的 f 属性组成的列表
我使用的纹理图像:
当我尝试使用经典的 ligthing 展示它时:
我可以看到这样的东西:
但是当我使用 Blinn 和 Phong 着色模型时(我会避免全部粘贴,希望有人遇到过类似的问题),它是这样的:
为什么在这两种情况下我都看不到质地良好的茶壶?是不是我必须在获得法线和vt坐标后准备新的f属性才能发送到VOB?
unity3d - 使用 Unity 将纹理从平面投影到对象
我正在尝试使用光线投射将纹理从平面投影到墙上。这应该实时发生。由于平面比墙大,所以只有部分纹理应该出现在墙的正面。所以移动平面也会改变墙上贴图的部分。墙上可以有窗户等,所以它不仅仅是一个简单的立方体。我已经设法使用光线投射获得纹理坐标,但我还没有设法将纹理正确地放在墙上。任何想法我可以如何实现这一目标?
c++ - 无法在四边形上渲染纹理
我正在尝试使用 OpenGL 为图形编写 C++ 中的简单游戏。在我的游戏中,我有在屏幕上呈现为白色方块的对象。我希望能够将图像作为纹理绑定到这些对象,这样我就可以在屏幕上渲染图像而不是白色方块。虽然我一直在使用 .png 或 .bmp 进行测试,但对图像的格式没有限制。
我的一个对象类 Character.h 存储了一个名为 _texture 的 GLuint* 成员变量和一个名为 _data 的无符号 char* 成员变量(分别作为图像句柄和像素数据)。在 Character.h 中,这个函数用于将图像作为纹理绑定到 Character 对象:
绑定图像后,我会尝试使用此函数(这是在单独的类中找到的静态函数)渲染 Character 对象:
不管我如何处理这个问题,除了渲染一个没有纹理的纯白色方块之外,我似乎无法让我的程序做任何事情。我已检查以确保变量文件、_texture、_dimension 和 _data 都包含值。谁能发现我可能做错了什么?
three.js - 将 fxaa 应用于场景,但某些纹理除外
我在 three.js 中有一些场景,其中包含实体立方体等静态对象。
在这些对象上,我放置了一些四边形,每个四边形都带有字母图像。
当我激活 fxaa 后处理时,主要对象看起来不错,但字母纹理看起来不太好 - 模糊和肮脏。我认为这是因为字母纹理已经抗锯齿。我无法生成另一种类型的纹理,因为 Chrome 渲染字体已经抗锯齿,我只是得到纹理的屏幕截图。
是否有可能以某种方式从 fxaa 通行证中排除某些对象?也许做更多的渲染通道?有什么想法或样本吗?
谢谢。
opengl - OpenGL 4.3 - CubeMap 仅在绑定为 GL_TEXTURE_2D 时有效
我正在尝试在 open gl 中实现一个天空盒。除非我将它绑定为 GL_TEXTURE_2D 否则它不起作用
这就是我加载立方体贴图的方式:
在下面的片段中,我将纹理绑定为立方体贴图。这不起作用!我只是得到一个黑色方块。但是,如果我将它绑定到 GL_TEXTURE_2D 我会得到一个带纹理的立方体(?)。
我的材质渲染:
我的顶点着色器:
片段着色器:
我对 OpenGL 很陌生。这可能是一个标记问题吗?
这是我在开始时设置的仅有的 3 个标志。
真的不知道这里该怎么办。这对我来说似乎很模糊。谢谢!马克