glGenerateMipmap - 非 2 的幂

2023-12-24

环境 Ubuntu 17.04、Chrome 60。

在本地运行此示例,不会出现警告/错误:https://github.com/mdn/webgl-examples/tree/gh-pages/tutorial/sample6 https://github.com/mdn/webgl-examples/tree/gh-pages/tutorial/sample6

然后更换cubetexture.pngnon-power-of-2图片在这里:https://github.com/mdn/webgl-examples/blob/gh-pages/tutorial/sample6/webgl-demo.js#L220 https://github.com/mdn/webgl-examples/blob/gh-pages/tutorial/sample6/webgl-demo.js#L220

得到预期的警告/错误:

[.Offscreen-For-WebGL-0x13d050ba2c00]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.

[.Offscreen-For-WebGL-0x13d050ba2c00]GL ERROR :GL_INVALID_OPERATION : glGenerateMipmap: Can not generate mips

接下来添加参数:

gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);

然后运行正常,没有警告,但仍然意外出现错误:

[.Offscreen-For-WebGL-0x13d050fb4000]GL ERROR :GL_INVALID_OPERATION : glGenerateMipmap: Can not generate mips

除了错误消息之外non-power-of-2图像在立方体上渲染正常。 Firefox 54 中也有同样的行为。关于这里发生的情况有什么提示吗?


您无法在 WebGL1 中为非 2 的幂纹理生成 mipmap。这就是要点,WebGL1 时期不支持 mipmap 的非 2 幂纹理。因此,您设置过滤,使其仅使用级别 0

gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);

这意味着没有理由生成 mip,因为它们永远不会被使用。看这篇文章 https://webglfundamentals.org/webgl/lessons/webgl-3d-textures.html.

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

glGenerateMipmap - 非 2 的幂 的相关文章

  • 加载生成的纹理数据在 Libgdx/Lwjgl 中是不确定的

    数据格式如下 final int width 256 final int height 256 final float data new float width height 4 FloatBuffer dataBuf int textur
  • 在 Three.js 中针对“子场景”进行光线投射

    因此 我正在使用 Three js 示例中的 webgl interactive cubes html 并且我有一个相对简单的问题 是否可以测试光线与对象的子对象的相交 例如 如果我做类似的事情 for var i 0 i lt 2000
  • Three.js - 在自定义几何体上平滑兰伯特材质着色的问题

    我在 Three js 中创建了一个自定义几何体 现在 我想创建一个使用平滑阴影兰伯特材质的网格 使用循环 我创建了顶点数组 然后创建了面 然后我调用了 geometry computeCentroids geometry computeF
  • Haskell opengl 纹理 GLFW

    我一直在尝试获取一些仅使用 texcoords 在正方形上显示纹理的脚本 如果可能的话 您可以编辑脚本 以便它可以正常工作 从那里我可以了解您是如何做到的 因为这就是我学习的方式 import Control Monad unless wh
  • 全屏背景纹理与 OpenGL 性能问题 (iPad)

    我对在 OpenGL 中使用带纹理的三角形网格绘制全屏背景时所看到的糟糕性能感到非常困惑 仅绘制背景而没有其他内容 使用最基本的着色器时最高可达 40 fps 使用默认值时最高可达 50 fps管道 虽然 40 fps 看起来并不算太糟糕
  • Hello world WebGL 并行性示例

    围绕 WebGL 似乎有许多用于运行并行处理的抽象 例如 https github com MaiaVictor WebMonkeys https github com MaiaVictor WebMonkeys https github
  • iOS4:如何使用视频文件作为 OpenGL 纹理?

    我正在尝试将视频文件的内容 暂时不包含音频 显示到 OpenGL 中的 UV 映射 3D 对象上 我已经在 OpenGL 中做了相当多的工作 但不知道从哪里开始处理视频文件 而且大多数示例似乎都是从相机获取视频帧 这不是我想要的 目前我觉得
  • 动画 GIF 作为 THREE.js 中的纹理

    我正在寻找一种在 THREE js 中使用 GIF 动画作为纹理的方法 我目前可以加载纹理 甚至是 GIF 格式 但它无法播放动画 有什么办法可以做到吗 我发现了一些像这样的链接 https github com JordiRos GLGi
  • 使用图像而不是平铺填充纹理画笔

    我有一个纹理画笔 它使用特定的图像来使纹理显示如下 Image image new Bitmap Untitled png for int i 0 i lt points Count i using TextureBrush tbr new
  • WebGL2 FBO 深度附件值

    我只是尝试使用 WebGL2 渲染场景的深度值 如下所示 Texture depthTexture gl createTexture gl bindTexture gl TEXTURE 2D depthTexture gl texImage
  • WebGL:enablevertexattribarray索引超出范围

    这是我的顶点和片段着色器
  • 解决 Three.js / webGL 中的 gl_PointSize 限制

    我正在使用 Three js 创建交互式数据可视化 此可视化涉及渲染 68000 个节点 其中每个不同的节点具有不同的大小和颜色 最初我尝试通过渲染网格来实现此目的 但事实证明这非常昂贵 我当前的尝试是使用 Three js 粒子系统 每个
  • 当 OpenGL 中同时绑定 1D 和 2D 纹理时,正确的行为是什么?

    假设你有这样的东西 glBindTexture GL TEXTURE 2D my2dTex glBindTexture GL TEXTURE 1D my1dTex glBegin 正确的 OpenGL 行为是什么 要绘制一维纹理 二维纹理还
  • OpenGL - 两个纹理的幂

    OpenGL 使用二次幂纹理 这是因为由于 MipMapping 某些 GPU 只接受 2 的幂纹理 当绘制比实际更大的纹理时 使用这些二次方纹理会导致问题 我想到了一种方法来解决这个问题 即仅在我们使纹理小于实际大小时使用 PO2 比率
  • 如何使用键盘和鼠标控制相机 - Three.js

    我在 WEB GL 中有一个带有 Three js 的 3D 环境 并且我曾经使用 Orbitcontrols js http codepen io nireno pen cAoGI http codepen io nireno pen c
  • 优化重叠矩形的绘制

    我有很多矩形 有些与其他矩形重叠 每个矩形都有一个绝对 z 顺序和一个colour 每个 矩形 实际上是粒子效果 网格或纹理的轴对齐边界框 并且可能是半透明的 但只要您不尝试剔除其他矩形后面的矩形 就更容易抽象地思考彩色矩形 所以我将在问题
  • Three.js、自定义着色器和具有透明度的 png 纹理

    我有一个非常简单的 PNG 纹理 一个带有透明背景的灰色圆圈 我用它作为制服map for a THREE ShaderMaterial var uniforms THREE UniformsUtils merge basicShader
  • 进行亚像素平移时,2D 纹理会扭曲

    我想知道一个理论推理为什么这是可能的 几何体的平移与纹理映射有何关系 我只能在进行子像素平移时注意到这种效果 如果通过整个像素平移 纹理看起来很好 我正在使用正交投影 GL CLAMP TO EDGE GL NEAREST 片段着色器是hi
  • glClipPlane - webGL 中有等效的吗?

    我有一个 3D 网格 是否有可能像这样呈现剖面图 剪辑 glClipPlane在OpenGL中 我正在使用 Three js r65 我添加的最新着色器是 片段着色器 uniform float time uniform vec2 reso
  • 允许使用 SurfaceTexture 在 GLSurfaceView 渲染器中进行多通道渲染

    我正在显示视频GLSurfaceView使用需要连续应用多个着色器的自定义渲染器 目前 它可以成功地使用一个着色器 但我不确定如何扩展渲染管道以连续应用多个着色器 我知道有一些关于应用多个着色器的示例 使用FrameBuffers and

随机推荐

  • 在 Jenkins 管道中获取 SSH 从节点主机名/IP

    我使用 SSH 从设备作为 Jenkins 管道脚本中的节点 有没有办法获取管道 Jenkinsfile 脚本内节点的主机名 IP 我正在部署到参数化节点 并希望在脚本末尾回显该节点的 IP i e node master checkout
  • 防止 akka actor 重新启动子 actor

    我正在努力找一个演员Worker不要重新启动它的子演员SubWorker当它被自己的主管重新启动时Mngr 即使在覆盖之后我也没有成功preRestart and postRestart in Worker 日志仍然显示SubWorker直
  • Android NDK -arm-linux-androideabi-g++:未找到

    我正在尝试在我刚刚安装的新 Ubuntu 中为 Android 目标构建 C POCO 库 我已经安装了Android NDK home user dev Android android ndk r9 x86并使用以下命令在环境变量中添加
  • 如何在控制台多行上更新数据

    我想在控制台的两行上显示数据 我只想每次更新这两行 到目前为止我所做的是 var logInline function alpha bravo process stdout cursorTo 0 0 process stdout clear
  • Html选择问题

    我在 html 选择元素中有一些长文本 当用户选择一个选项时 只要选择了 就会显示文本 使其可用且清晰的最佳解决方案是什么 Example
  • 您认为软件公司应该向开发人员强加一种编码风格吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 未指定所需属性“action”

    首先 我对我的英语不好感到抱歉 因为我不是以英语为母语的人 所以我的问题中可能存在一些与英语相关的错误 我希望任何读我问题的人都能理解我想说的 我是学习者 我正在将 PSD 转换为 XHTML 和 CSS 我已经完成了我的工作 但是当我在
  • 有没有深入的 ttk 造型指南? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 所以我最近开始涉足 Tkinter 并且我的想法是创建一个本质上讲故事的应用程序 最终 我希望对大多数
  • 使用 tshark 过滤 VoIP 呼叫

    我正在分析网络上的 VoIP 呼叫 目前我正在使用生成的 pcap 文件 但稍后我将实时监听该文件 我正在使用 tshark 我可以很容易地从 pcap 中过滤一些重要数据 例如 源 ip 地址和端口 目标 ip 地址和端口 有效负载 pc
  • 为 CLR 实现函数式语言(或者,关于 F# 实现的论文)

    有谁知道有关 F 编译器实现的任何好论文吗 我正在尝试为针对 CLR 的简单函数式语言生成 CIL 代码 但我在几个方面遇到了困难 函数式语言和 CIL 之间的差异使得生成类型正确的 CIL 代码变得困难 我有通过类型擦除来工作的解决方案
  • Crashlytics 上传 Android 原生库的符号成功,但 Firebase 控制台中没有显示任何符号?

    我正在尝试在 Android 应用程序中上传外部本机库的本机符号 所有设置和 crashlyticsUploadSymbolsRelease 似乎都成功了 我检查了 crashlytics log 它说 cSYM 文件正在生成并上传到htt
  • Azure 应用服务:使用性能计数器

    我正在尝试设置我的 Azure Web 应用程序以包含第三方软件的使用 这似乎需要访问 PerformanceCounters 在本地 这工作正常 但是当我在 Azure 中运行它时 出现以下错误 UnauthorizedAccessExc
  • 如何在python中读取pdf文件而不在unix中转换它? [复制]

    这个问题在这里已经有答案了 pdfile open tutorial pdf r xyz pdfile readlines pqr pdfile readline for a in xyz print a 该代码不显示实际内容 相反 它显示
  • 在准备好的语句上使用 fetch_assoc

    我目前正在编写登录脚本 我得到了以下代码 selectUser db gt prepare SELECT id password salt FROM users WHERE username selectUser gt bind param
  • git 网站更新策略 - 如何同步开发和实时存储库?

    以下是我构建 git 支持的网站更新和备份策略的方式 我可以通过 SSH 访问托管该网站的 Linux VPS 这是我所做的 1 在网站服务器上 在正确的网站文件夹 公共根之前的一级 创建了一个 git 存储库 cd path to web
  • Powershell复制文件或获取内容而不锁定它

    我们有一些预定的脚本 他们必须访问带有点源函数的文件 Functions ps1 此 Functions ps1 位于共享上 因为 ExecutionPolicy 我无法像这样加载文件 share folder Functions ps1
  • 使用 NSTimer 显示像汽油泵表一样动画的秒表计时器

    我是iOS开发新手 当我按下秒表开始按钮时 我想显示计时器 如计数器令牌效果 我附上了图像供您参考 我已经完成了显示秒和分钟 但我不知道 如何动画自动滚动效果 我怎样才能做到这一点 When the counter is moving it
  • Swift DidSelectRowAt 未触发

    我有一个项目 有几个不同的 VC 其中两个有 TableViews 第一个工作得很好 我在那里有一个自定义视图等 第二个也是自定义的 它填充了很好的信息 但与第一个不同 我无法点击它来继续下一个 VC 我已正确设置委托和数据源 我的项目中有
  • 在 ASP.NET 开发服务器下运行时,WebForms 中的 ASP.NET 路由不处理非 ASP 扩展

    我在 Visual Studio 2010 下创建了一个默认网站 在 Global asax 中添加了一个简单的路由 routes MapPageRoute AboutRoute about About aspx 当我启动时显示404ASP
  • glGenerateMipmap - 非 2 的幂

    环境 Ubuntu 17 04 Chrome 60 在本地运行此示例 不会出现警告 错误 https github com mdn webgl examples tree gh pages tutorial sample6 https gi