问题标签 [textures]
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.
c++ - SDL_surface 到 OpenGL 纹理
嘿,我有这个脚本来加载 SDL_Surface 并将其保存为 OpenGL 纹理:
问题是它不起作用。当我从主函数调用该函数时,它只是不加载任何图像(当显示它只是改变绘图颜色时),当从主函数之外的任何函数调用时,程序崩溃。正是这一行使程序崩溃:
有人能看出这有什么错误吗?
opengl - 对 OpenGL 纹理使用自己的 mipmap 创建算法是否有意义?
我想知道如果我使用自己的算法而不是内置的自动算法来预生成它们,纹理 mipmap 的质量是否会更好。我可能会使用缓慢但漂亮的算法,例如 Lanczos 重采样。
是否有意义?我会在现代显卡上获得任何质量提升吗?
c# - 将图像的一部分渲染到位图 C# Winforms
我正在为我在空闲时间设计的 XNA 游戏开发地图编辑器。地图中使用的艺术品存储在单个纹理上,矩形存储有坐标和宽度等。
在 winforms 应用程序中,我可以通过从列表框中选择我想要的段来添加段,该列表框是从可能的段数组中填充的。
问题是我希望能够显示所选片段的预览,并且由于它存储在通用纹理上,因此我不能简单地设置一个图片框来显示图像。
无论如何使用矩形信息(.x,.y,.width,.height)来仅显示图片框中的图像部分,或者将部分位图并显示?
非常感谢
迈克尔·艾伦
iphone - 512x512 纹理在 iPhone 上造成巨大的 GPU 压力,尽管平铺
我正在 iPhone 上测试我的简单 OpenGL ES 实现(2D 游戏),我注意到在使用分析器时渲染利用率很高。这些是事实:
- 我仅以 60fps 显示一个预加载的大纹理(512x512 像素),渲染利用率约为 40%。
- 我的纹理是使用 混合的
GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
,这是我使用的唯一 GL 函数。 - 我试图使纹理更小并平铺,这没有任何区别。
- 我正在使用 1024x1024 像素的 PNG 纹理图集
我觉得很奇怪,这个纹理会导致如此密集的 GPU 使用。
这是可以预料的吗?我究竟做错了什么?
编辑:我的代码:
编辑:我做了一些改进,但没有一个能够降低渲染利用率。我将纹理划分为 32x32 的部分,将坐标和纹理坐标的类型从 GLfloat 更改为 GLshort,并为退化三角形添加了额外的顶点。
更新内容是:
initState:( 顶点和纹理指针现在是 GL_SHORT)
绘制视图:
opengl - OpenGL - 从小于该屏幕的屏幕复制纹理
我正在尝试将屏幕捕捉到分辨率低于屏幕本身的纹理(以渲染回屏幕并创建模糊/绽放效果),但效果不太好。我知道可以使用 mipmap 来执行此操作,但我无法让正确的命令序列起作用。
我当前的代码:
opengl-es - 将任意大小的像素块复制到 OpenGL ES 纹理中……不知何故?
我正在编写一个绘图应用程序,绘图画布是一个 OpenGL 纹理。当您在画布上绘图时,它会确定画布纹理的哪个区域已更改,并在应用您所做的更改之前复制该像素数据(使用 glReadPixels)。
要撤消,我想使用复制出来的像素数据简单地恢复到以前的纹理状态。但是,OpenGL ES 不提供 glDrawPixels 命令。最好的方法是什么?
我考虑了两种选择,但我不确定是否有那么好:
使用我复制出来的像素创建一个临时纹理并将其绘制进去。(但是,复制的区域不是 2 的幂!)
完全解绑大画布纹理,手动修改纹理字节,然后放回OpenGL。我没有使用任何形式的压缩,所以这可能不是那么糟糕。但这似乎是一个黑客?
有人有什么想法吗?我真的很感激!
iphone - iPhone:纹理大于 64x64?
我以 GLPaint 为例...我正在尝试将背景放入“PaintingView”中,这样您就可以在背景上绘制,最后将图像保存为文件......我迷路了。
我正在加载 PNG (512x512) 并尝试在程序一开始就“用它绘画”,但它被绘制为 64x64 而不是 512x512 ......
我之前尝试加载是作为绘画视图的子视图......但是,glReadPixels 没有按预期工作(它只考虑到绘画视图,而不是子视图)。此外,paintingView 没有像 initWithImage 这样的方法...我需要 glReadPixels 处理图像(以及修改中),但我真的不知道为什么当我加载它时,纹理的大小为 64x64。
opengl - XNA 或 OpenGL 球体纹理映射
我正在尝试将完全正常的纹理映射到球体中。
我无法将我的纹理更改为包裹的,所以我需要找到一些映射函数。
这是我的顶点着色器代码:
它直接来自这里:http: //blogs.msdn.com/coding4fun/archive/2006/10/31/912562.aspx
这是我的片段着色器:
正如您在此屏幕截图中看到的那样:http: //img189.imageshack.us/img189/4695/sphereproblem.png,它显示了球体中的裂缝......这就是我要修复的问题。(使用的纹理:http: //img197.imageshack.us/img197/56/debug.jpg)
XNA 网站上的第一条评论确实使用以下方法解决了问题: device.RenderState.Wrap0 = WrapCoordinates.Zero;
但是因为我对 XNA 内部的了解不够多,所以我无法理解这在这个特定问题中解决了什么问题。
在网络上,有些人经历过同样的事情,并且报告说是关于插值错误,但是因为我直接将它作为片段着色器(每像素/片段)实现,所以我不应该有这个问题(在纹理 uv)。
关于此的任何信息/解决方案?
winforms - 在 C# Winforms 中将多个图像渲染为位图
我正在开发一组用于在 XNA 中创建游戏的应用程序。使用 Graphics.drawImage 我可以轻松地从 XNA texture2D 对象中绘制预览图像。
每个对象,例如Character、Map 等,都由一个部件列表组成,每个部件存储诸如位置旋转和纹理源等信息。下一步是渲染整个对象的预览,而不仅仅是一部分。
我该怎么办?我可以将 Graphics.drawImage 视为常规 XNA 绘图调用,并通过循环遍历列表并将每个项目按位置和顺序绘制到位图来将我想要的对象部分渲染为位图吗?还是每个 graphics.DrawImage 调用都会破坏它绘制的位图?
iphone - 以编程方式检查 iPhone 上的纹理内存使用情况
有没有办法以编程方式检查 iPhone 上的 OpenGL ES 纹理内存使用情况?
我知道你可以使用 Instruments 来监控它,但我想在 app 中做是可能的。