OpenGL 中的纹理贴图

2023-12-30

我在使 mipmap 正常工作时遇到了很多麻烦。我使用的是 OpenGL 1.1,并且没有 glu,因此我使用以下纹理启动代码:



  glGenTextures(1,&texname;);
  glBindTexture(GL_TEXTURE_2D,texname);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST_MIPMAP_NEAREST);
  w=width;h=height;
  for(int i=0;i<mipmaps;i++,w/=2,h/=2)
    glTexImage2D(GL_TEXTURE_2D,i,GL_RGBA8,w,h,0,GL_RGBA,GL_UNSIGNED_BYTE,tex[i]);
  

变量:



// data types:
unsigned long int *tex[20];
int mipmaps, width, height, w, h;
GLuint texname;
  

tex是一个保存纹理 mipmap 像素数组列表的数组。 mipmap 处理正确(我单独测试了它们)。mipmaps是将原始图像缩小为 1x1 像素纹理的 mipmap 数量(原始纹理为 256x256 - 所以此时在代码中为 8)。width and height是原始纹理的尺寸 (256x256)。

结果是它甚至不使用纹理。一切都显得平坦的灰色(由于照明而呈灰色)。

有什么我忘记了吗?我查过这个参考 http://www.glprogramming.com/red/chapter09.html,我找不到任何冲突。

其他细节:总的来说,我启用了GL_DEPTH_TEST、GL_TEXTURE_2D、GL_LIGHTING、GL_CULL_FACE、GL_FOG(以及GL_LIGHT0、GL_LIGHT1,它们可能没有什么区别)。 另外,我正在使用 Mesa 3D 的 OpenGL 实现(Mesa 版本 4.0,可转换为 OpenGL 版本 1.3),如果这可能与之有关的话。

EDIT:

问题是,当我将 GL_NEAREST_MIPMAP_NEAREST 更改为 GL_NEAREST 时,纹理工作正常(不使用 mipmap)。所以,我看不出它怎么可能是任何其他代码——至少我想不出它可能是什么。


mipmaps 的值为 8。您的图像为 256x256。因此,您应该有 9 个级别的 mipmap (256,128,64,32,16,8,4,2,1)。如果缺少一个,你就会失去质感。

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

OpenGL 中的纹理贴图 的相关文章

  • STL之类的容器typedef快捷方式?

    STL 容器的常见模式是这样的 map
  • 使用 C# 将多个音频样本混合到单个文件中

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个能够创建音频文件 mp3 或 wav 的库 NAudio http www codeple
  • 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

    我有一个新安装的 MySQL 服务器 它监听 localhost 3306 从 Qt 应用程序连接到它的正确方法是什么 原来我需要将MySQL添加到ODBC数据源 我在遵循这个视频教程后做到了这一点 https youtu be K3GZi
  • ContentDialog 未与 UWP 中心对齐

    据我所知 ContentDialog的默认行为应该是使其在 PC 上居中并在移动设备上与顶部对齐 但就我而言 即使在 PC 上我也将其与顶部对齐 但我不明白发生了什么 我正在使用代码隐藏来创建它 这是我正在使用的代码片段 Creates t
  • 如何减少 MinGW g++ 编译器生成的可执行文件的大小?

    我有一个简单的 Hello world C 程序 在 Win XP 下由 MinGW g 编译器编译为 500kB 可执行文件 有人说这是由于iostream的库和静态链接libstdc dll Using s链接器选项有点帮助 减少了 5
  • 如何将STL容器数据转储到gdb中?

    我无法在 gdb 中转储 STL 无序映射容器值 变量类型是 std unordered map var 我的 gdb 版本 7 7 1 GDB配置 configure host x86 64 linux gnu target x86 64
  • 如何让XmlReader读取C#中的属性?

    我有一个 XML Stream 其中包含以下 XML 内容
  • 如何从外语线程调用Python函数(C++)

    我正在开发一个程序 使用 DirectShow 来抓取音频数据 媒体文件 DirectShow 使用线程将音频数据传递给回调 我的程序中的函数 然后我让该回调函数调用另一个函数 Python 中的函数 我使用 Boost Python 来包
  • 当需要不同数量和类型的参数时如何创建操作委托列表

    我们有一组大约两打的类 它们继承自具有抽象 Validate 方法的基类 当然 每个类都有不同的验证需求 但它们之间的不同组合需要规则 因此 正如您可以想象的那样 这导致了大量代码重复 例如 A 类需要规则 1 3 6 和 9B 类需要规则
  • 从 DataRow 单元格解析 int [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如何从 DataRow 单元格解析 int 值 Int32 Parse item QuestionId ToString 这段代码可以工作 但看
  • 传递数组时在 C 中的函数参数中强制指定数组大小

    Context 在 C 中 我有一个以数组作为参数的函数 该参数用作该函数的输出 输出的大小始终相同 我会 让阅读代码的人清楚所需的大小 不过它已经在函数注释中了 理想情况下 编译会输出警告或错误 这样我就可以在编译时而不是运行时防止出现问
  • Gremlin.net 文本包含等效项

    我正在使用 Gremlin net 库连接到 janus 图形服务器 我使用 cassandra 和弹性搜索进行数据存储和索引 在我使用的 gremlin 语言和 gremlin 控制台中文本包含在属性的文本中进行搜索 我正在使用混合索引
  • 如何同步nosql db(ravendb)中的更改

    我已经开始在 RavenDB 的示例上学习 NoSQL 我从一个最简单的模型开始 假设我们有由用户创建的主题 public class Topic public string Id get protected set public stri
  • C++ 中是否有与 PHP 的explode() 函数等效的函数? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 中分割字符串 https stackoverflow com questions 236129 splitting a string in c 在 PHP 中 explode 函数将获取一个字
  • 选择合适的IDE

    您会推荐使用以下哪种 IDE 语言来在 Windows 下开发涉及识别手势并与操作系统交互的项目 我将使用 OpenCV 库来执行图像处理任务 之后 我将使用 win32 API 或 NET 框架与操作系统交互 具体取决于您建议的工具 性能
  • C 变量声明的效率 [重复]

    这个问题在这里已经有答案了 例如 在 C 中声明一个变量需要多长时间int x or unsigned long long var 我想知道它是否会让我的代码在类似的事情中更快 for conditions int var 0 code 这
  • 具有四个 && 的 LINQ Where 子句

    我正在尝试在Where 子句中创建一个带有4 个参数的LINQ 查询 这是一个 Windows 8 应用程序项目 我正在使用 SQLite 数据库 SQLite 实现 https github com praeclarum sqlite n
  • 从脚本启用/禁用 GameObject 组件 [Unity3D]

    我需要获取一个脚本中设置的布尔值 放入名为 bouclier 的变量 以启用或禁用游戏对象 该变量位于游戏对象 Player 中 此处右下角 我需要启用或禁用这个游戏对象 Bouclier01 为此 我将脚本附加到游戏对象 Bouclier
  • 如何在c#中创建多线程

    我需要监听机器中的所有串行端口 假设我的机器有 4 个串行端口 我必须创建 4 个线程并开始分别使用附加线程监听每个端口 我使用此代码来获取我的机器中的端口数量 private SerialPort comPort new SerialPo
  • 如何在 C 中创建最低有效位设置为 1 的掩码

    这个功能如何运作 最低有效 n 位设置为 1 的掩码 Example n 6 gt 0x2F n 17 gt 0x1FFFF 我根本不明白这些 尤其是 n 6 gt 0x2F 另外 什么是面膜 通常的方法是采取1 并将其左移n位 这会给你类

随机推荐

  • 将 GitHub 分叉到 AzureDevOps?

    这篇2014年的帖子 http www woodcp com 2014 01 how to fork git repositories on visual studio online 表示没有对从 GitHub 分叉到 AzureDevOp
  • matplotlib 中的 Latex 渲染错误

    使用 python 2 7 12 在 Ubuntu 16 04 上 和 matplotlib 1 5 2 以下代码渲染不正确 from matplotlib pyplot import plot 1 2 1 1 xlabel r beta
  • Python。如何优化搜索功能

    有什么办法可以优化这两个功能吗 第一个功能 def searchList list element for i in range 0 len list if list i element return True return False 第
  • Mockito - void 函数上的 thenCallRealMethod()

    我在尝试编写 JUnit 测试用例时遇到了问题 而且对 Mockito 还比较陌生 我有一个正在嘲笑的类的函数 该函数恰好是 void 返回类型 当从我的模拟类调用此函数时 我的理解 和调试经验 是它不会调用原始函数 为了克服这个问题 我尝
  • pythonanywhere - 如何使用 websockets 按照 web2py 消息传递示例传输消息?

    因此 我构建了一个应用程序来使用 web2py 和 pythonanywhere 测试 websockets 并且它可以在本地工作 但是当上传到 pythonanywhere 时它不起作用 我认为原因是我正在将内容发送到本地主机 127 0
  • Google Play 游戏功能徽章在 Google Play 上不可见

    我成功地将 Google Play 服务集成到我的 Android 应用程序中 并添加了成就和排行榜 但发布已经几天了 但我在 Google Play 上看不到它的徽章 我需要向 AndroidManifest xml 添加什么内容吗 这些
  • Java util zip 创建“损坏”的 zip 文件

    我正在压缩目录的内容 但在尝试打开压缩文件时遇到错误 谁能告诉我的代码发生了什么 也许我没有分配足够的字节 查看 zipDirectory 内部 您会看到我正在压缩包含特殊扩展文件的文件夹 不确定错误发生在哪里 所以也许有人可以帮助我 非常
  • 使用 MongoDB 进行 Elastic Beanstalk 部署

    非常感谢有关如何通过以下堆栈正确部署 Elastic Beanstalk 的资源建议 MongoDB 导轨 美洲狮 Sidekiq Redis 弹性搜索 我需要在 ebextension 文件中设置所有这些内容吗 或者是在 AWS 中手动设
  • 给定音频流,查找门何时关上(声压级计算?)

    与拍手探测器没什么不同 拍手 拍手鼓掌拍手吧 拍手鼓掌拍手 拍手 拍板 拍手鼓掌 我需要检测门何时关闭 这是在车辆中 这比房间或家庭门更容易 Listen http ubasics com so van driver door openin
  • 这不是尾递归风格的代码吗?

    我对 Scala 有点陌生 在阅读 David Pollack 的 Begining Scala 时尝试了它 他定义了一个简单的递归函数 从文件中加载所有字符串 def allStrings expr gt String List Stri
  • Android Volley,JsonObjectRequest 但接收 JsonArray

    所以我正在使用JsonObjectRequest发送一个JsonObject到休息电话 但它返回JsonArray而不是一个JsonObject 它给了我一个错误 说它无法解析来自JsonObjectRequest 但如果我使用JsonAr
  • Go指针第一次赋值

    当我在玩弄闭包时 我偶然发现了这种行为 我无法理解它 此代码片段的工作原理 func main var a string foo var b string var c string bar b c fmt Printf s s n a b
  • 比较数组不打印差异

    这是我的测试代码 a array Peter gt 35 Ben gt 37 Joe gt 21 b array Peter gt 35 Ben gt 21 Joe gt 43 function leo array diff a b map
  • DWT Java 脚本库进度对话框自动与 Angular 5 显示

    我将 Dynamic Web Twain javascript 库合并到我的 Angular 应用程序中 以允许我的最终用户使用 Web 浏览器而不是桌面应用程序进行扫描 加载页面后 立即弹出进度条 这不是预期的行为 当我使用 Angula
  • IE 9+ 下载属性解决方法

    我正在尝试从我的网络服务下载文件 我需要将复杂的元数据传递到服务器才能知道如何下载文件 以下是我如何在常青浏览器中实现这一目标 i use angular but not important for this demo http post
  • 再次仔细检查锁定和 C#

    最近 我一直在重构一些 C 代码 我发现发生了一些双重检查锁定实践 我当时并不知道这是一种不好的做法 我真的很想摆脱它 问题是我有一个类应该延迟初始化并被大量线程频繁访问 我也不想将初始化移至静态初始化程序 因为我计划使用弱引用来防止初始化
  • 使用 ITextSharp 将 HTML 文件转换为 PDF 文件

    我想完成以下任务 给定 html 文件的路径名和所需的 pdf 文件的路径名 使用 ITextSharp 将 HTML 文件转换为 PDF 我见过很多代码示例 它们的功能与此接近 但不完全是我需要的 我相信我的解决方案需要使用 iTextS
  • 使用 api v2 创建 Facebook 事件

    可以使用 Facebook API 创建事件吗 API v1 中可以实现 https developers facebook com docs graph api reference v1 0 event publish https dev
  • 需要在ARCORE中播放视频

    正如我们在 ARCore 中所知 我们可以通过单击水平面来检测 3D 对象 而不是 3d 对象 当用户要单击平面时 我需要显示视频 外观和感觉应该与显示的 3D 对象相同 视频应以预览模式显示 而不是 3D 对象 在 ARcore 中 他们
  • OpenGL 中的纹理贴图

    我在使 mipmap 正常工作时遇到了很多麻烦 我使用的是 OpenGL 1 1 并且没有 glu 因此我使用以下纹理启动代码 glGenTextures 1 texname glBindTexture GL TEXTURE 2D texn