草庐IT

纹理表

全部标签

c++ - CUDA 纹理和夹紧

有什么方法可以将超出范围的纹理地址限制在某个值吗?就我而言,我希望将它们设置为简单的零,但我需要的地址模式似乎不存在。谢谢。编辑:知道cudaAddressModeBorder设置的作用吗? 最佳答案 我不认为有一种方法可以指定钳位,但你可以做显而易见的事情并在边缘周围添加一个1像素的黑色(零)边框并将你的寻址偏移1。它不应该有更多的数据和它会免费为您夹紧。如果您有最大尺寸的2D纹理(对于CUDA2.x,它是64kx64k),每像素16字节(最坏情况),那么对于1像素边框,您只会看到4MB的额外数据,这对于PCIex16卡,复制到卡

Direct3D中支持这种纹理的方式吗?

目前,我试图以以下方式以编程方式创建纹理:我有一个1尺寸的十六进制阵列:chararray={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}我想使用碎片这构成了此数组,因为f=1111和7=0111在二进制中等等。从视觉上看,看起来像这样:1111111011111101111110111111011111101111110111111011111101111111本质上,数组的每个元素都代表一行,构成字符之一的八个位中的每个元素都代表元素。0将代表没有填充和1用于“填充”。然后,我会根据某些外部机制将颜色涂上颜色。我在msdn上找到了这个dxgi_forma

c++ - 如何获得最大数量的多纹理单元

假设我有一个函数,我希望用户能够以类型安全的方式选择合适的纹理。因此,我没有使用GL_TEXTUREX的GLenum,而是定义了一个方法,如下所示。voidactivate_enable_bind(uint32_ttexture_num){constuint32_tmax_textures=GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS-GL_TEXTURE0;constuint32_tactual_texture=(GL_TEXTURE0+texture_num);if(texture_num>max_textures){throwstd::runtime_e

c++ - OpenGL 渲染纹理全白

我正在尝试将.png图像渲染为纹理。然而,所呈现的只是一个白色方block。我为我的纹理提供了一个名为texID的唯一intID,将像素数据读入缓冲区“图像”(在.h文件中声明)。我加载我的像素缓冲区,执行我所有的OpenGL操作并将该像素缓冲区绑定(bind)到OpenGL的纹理。然后我使用glDrawElements绘制它。此外,我在调用其构造函数时将纹理初始化为32x32大小,因此我怀疑它与大小问题的二次幂有关。谁能看到我的OpenGLGL_TEXTURE_2D设置中的任何错误,这些错误可能会给我一个block状的白色方block。#include"Texture.h"Textu

c++ - COLOR_ATTACHMENT's - 如何将多个纹理渲染为帧缓冲区对象内的颜色附件?

我试图将多个纹理渲染为COLOR_ATTACHMENT但没有成功。我从显示它们得到的只是一个黑屏(带有红色透明填充),这意味着我的纹理已被读取但是是“空的”。我的伪代码是:将3个纹理附加到FBO,纹理索引分别为1、2和3,颜色附件分别为0、1和2。作为测试用例,我尝试将我的场景渲染为3种颜色的附件,因此它们应该保存相同的精确数据。然后在着色器channel2(使用2D采样器)读取这些纹理中的任何一个并将它们显示在四边形上。我对这2个额外颜色附件的初衷是使用GPU乒乓技术将它们用作随机数据缓冲区。到目前为止,我只是将它们用作测试目的的纹理克隆。当尝试从GL_TEXTURE1(COLOR_

c++ - OpenGL 混合在纹理周围创建白色边框

我正在尝试使用OpenGL(C++)将两个纹理渲染到一个矩形上。不过,我在混合这两者时遇到了一些麻烦。第一张图片来自.jpg文件(https://learnopengl.com/img/textures/container.jpg)。此图像没有alphachannel。第二张图片来自.png文件(https://learnopengl.com/img/textures/awesomeface.png),并且确实有一个alphachannel。问题是当我尝试混合两个图像时,它会在透明图像周围创建一个白色边框。我尝试了几种不同的混合模式(正如OP在这个问题中所推荐的:Alphablendi

c++ - FFMPEG 到 OpenGL 纹理

我是来问的,如何将AVFrame转换为opengl纹理。实际上,我创建了一个渲染器输出音频(音频正在工作)和视频,但视频没有输出。这是我的代码:纹理创建:glGenTextures(1,&_texture);glBindTexture(GL_TEXTURE_2D,_texture);glPixelStorei(GL_UNPACK_ALIGNMENT,1);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL

c++ - 纹理映射 C++ OpenGL

我已经阅读了相关内容,包括Nehe和此处的解决方案,但我找不到具体的答案。我正在尝试加载一张名为stars.jpg的照片。我想让它成为我的场景背景,通过使用uv坐标映射它,通过glBegin(GL_QUADS);glTexCoord2f(0,0);glVertex2f(0,0);但是我对如何加载实际纹理感到非常困惑,所有调用glActiveTexture();glEnable(GL_TEXTURE_2d);glBindTexture(GL_TEXTURE);他们所做的只是让我感到困惑,所有这些是什么意思/做什么,我应该以什么顺序放入这些,以便让stars.jpg成为我的背景?

c++ - 使用立即模式绘制纹理的 OpenGL 替代方案?

我正在编写一个简单的图形引擎,使用OpenGL和C++在屏幕上绘制纹理。我绘制纹理的方法是使用下面的源代码——绘制是在我编写的“Sprite”类中包含的方法中完成的,该类由主场景的游戏循环调用。glEnable(GL_TEXTURE_2D);glBindTexture(GL_TEXTURE_2D,m_textureID);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);glTexPar

c++ - 从高度图计算纹理坐标

我目前正在使用OpenGL构建高度图地形生成器。这是一个加载高度图图像、迭代图像数据并生成顶点、索引和法线的简单程序。在其当前状态下,它可以基于法线渲染具有单一颜色的高度图。我的问题是为漫反射贴图生成正确的UV坐标。结果是错误的:这是我要加载的漫反射贴图:这是我目前拥有的:生成顶点、法线和索引//GenerateVerticesandtexturecoordinatesfor(introw=0;rowimageHeight;row++){for(intcolumn=0;columnimageWidth;column++){floatx=(float)column/(float)this