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 中的纹理贴图 的相关文章

  • ostream cout 和 char *

    我有一系列像这样的字符 char arr 3 hi cout lt lt arr this will print out hi 运算符 cout lt
  • 使用 C++ 和 BOOST 读取 JSON 文件

    HTTP 服务器向我发送一个 JSON 响应 字符串 如下所示 folders id 109 parent id 110 path 1 105 110 id 110 parent id 105 path 1 105 files id 26
  • 解决相关代码的低 FPS 问题以计算图像中的偏移

    我正在尝试使用相关性来跟踪对象 我在较大的图像中逐帧找到较小的补丁 为此 我发现补丁中的变化 并且相关性最大的地方 用新补丁更新补丁 我的代码是 cv Mat im float 2 imagePart out cv Mat im float
  • CMakeLists.txt:30(项目)处的 CMake 错误:找不到 CMAKE_C_COMPILER

    我正在尝试使用 CMake 制作 Visual Studio 解决方案来编译最新版本的 aseprite 并且 CMake 不断向我提供 No CMAKE C COMPILER could be found No CMAKE CXX COM
  • 如何禁用vim的switch case缩进?

    我目前正在与 Vim 作斗争 我似乎无法让缩进选项达到我想要的效果 这是我的设置 我将它们放在 vimrc 的底部以确保它们优先 正如你所看到的 我有点疯狂 所以我尝试关闭几乎所有的东西 set cindent set cinkeys o
  • 抛出并保留堆栈跟踪不符合代码分析所描述的预期

    进行代码分析给了我项目 CA2200 CA2200 重新抛出以保留堆栈详细信息 func 重新抛出捕获的异常并将其显式指定为参数 请改用不带参数的 throw 以保留最初引发异常的堆栈位置 我已经实现了该建议 但无论如何我似乎都得到了相同的
  • 如何订阅 C++/CX 中 Windows 运行时组件内引发的事件?

    我在 Windows 运行时组件 用 C 编写 中有一个引发事件的类 我无法弄清楚如何在引用该组件的 C CX 应用程序中订阅这些事件 C 代码 在 Windows 运行时组件中 public sealed class Messenger
  • 确定数组的大小(如果传递给函数)

    如果将数组传递给另一个函数 未传递大小 是否可以确定数组的大小 数组的初始化类似于 int array XXX 我知道不可能执行 sizeof 因为它会返回指针的大小 我问的原因是因为我需要在传递数组的另一个函数内运行 for 循环 我尝试
  • 提供通用服务接口最具体实现的依赖注入机制

    我觉得我和标题一起玩了流行语宾果游戏 这是我所要求的一个简洁示例 假设我有一些实体的继承层次结构 class BaseEntity class ChildAEntity BaseEntity class GrandChildAEntity
  • 对于多重继承,使用隐式转换而不是 QueryInterface() 是否合法?

    假设我有一个类实现两个或多个 COM 接口 正如here https stackoverflow com questions 1742848 why exactly do i need an explicit upcast when imp
  • 防止重入并确保某些操作获取锁的正确方法是什么?

    我正在设计一个基类 当继承该基类时 它将针对多线程环境中的上下文提供业务功能 每个实例可能都有长时间运行的初始化操作 所以我想让这些对象可重用 为此 我需要能够 为这些对象之一分配上下文以允许其完成工作 防止对象在已有上下文的情况下被分配新
  • OpenCV:将垫子除以标量的最简单方法是什么

    我认为标题中已经包含了很多内容 显然我可以迭代和划分 但我认为有一种内置的方法 我看见cvConvertScale但这不适用于类型cv Mat 我知道标量乘法的缩放运算 cv Mat M float alpha cv Mat Result
  • 列表 到数据视图

    如何在 Net 中将列表转换为数据视图 我的建议是将列表转换为 DataTable 然后使用表的默认视图来构建 DataView 首先 您必须构建数据表
  • 为什么 new String("Hello") 在 C# 中无效?

    制作背后的逻辑 原因是什么 String s new String Hello World 在 C 中非法 错误是 string String char 的最佳重载方法匹配有一些无效参数 我对 API 文档不感兴趣 我感兴趣的是为什么这是非
  • 多次重定义错误

    在了解了有关类和指针的更多信息后 我重构了一个程序并删除了超过 200 行代码 在此过程中创建了另外两个类 Location and Piece 问题是 在编译完所有内容后 链接器抱怨构造函数Piece被定义了多次 有很多错误 In fun
  • 如果启用优化,JIT 是否会始终内联此方法?

    我并不期望得到明确的 是 或 否 您可能拥有的任何知识我都会考虑作为答案 private String CalculateCharge Nullable
  • 计算着色器中的 Image2D

    我想使用 image2D 作为顶点的 2D 存储 该顶点将由计算着色器修改 但不起作用 创建纹理 glGenTextures 1 HeightMap glBindTexture GL TEXTURE 2D HeightMap glTexIm
  • 使用 Doxygen 记录 C++ 中的宏函数

    如何使用 Doxygen 在 C 中记录宏函数 并在我的非 Evil 代码的文档中引用它 更具体地说 我在 Message H 中定义了一些名为 Message 的常规类 用户可以继承该类来定义自己的消息 在另一个文件 MessageHel
  • C# 代码自动授予 IIS 对 Windows Server 2008 上文件夹的写入权限?目前抛出异常

    我正在尝试编写一个命令行工具 该工具将为 Windows Server 2008 上的 IIS7 5 提供对 wwwroot 中文件夹的写入权限 以便 Web 应用程序有权写入其基本目录中的特定文件夹 以前 您可以通过在文件夹上分配 IIS
  • C# 的最佳替代“错误继续下一步”是什么?

    如果我为 C 代码放置空的 catch 块 它是否与 VB NET 的 On Error Resume Next 语句等效 try C code catch exception 我问这个问题的原因是因为我必须将 VB NET 代码转换为 C

随机推荐

  • 将 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