2011-03-11 32 views
5

我不希望用代码轰炸此帖子。我有一个主文件,片段着色器和一个顶点着色器文件。通过在GLSL中着色不同的屏幕区域来识别mip地图级别

我需要知道我应该采取哪些步骤来根据mipmap级别为屏幕着色?即循环应该去请求mipmap级别,然后相应地设置颜色。我不知道在哪里实施这个或如何实施,一个简单的例子就足够了,谢谢。

+0

也许我只是愚蠢的,但我不能告诉你想要做什么。你是否想要手动更改mipmap,以便每个mipmap具有不同的颜色?或者你想知道在片段着色器中使用哪个mipmap级别? – Hannesh 2011-03-11 15:33:39

+0

老实说,我不知道,我已经给了一个程序,我的任务之一是“5. \t通过区分不同的屏幕区域来识别不同的Mip Map级别。” – 2011-03-11 15:47:21

回答

1

您应该为每个关卡创建不同颜色的纹理,然后在片段程序中检索该颜色。也可以使用dFdx(texcoord.x)dFdy(texcoord.y)来计算它。

+0

谢谢,你让它听起来很容易。但是,你能更具体吗?我是一个noob – 2011-03-11 15:48:35

+1

float mip = log2(max(dFdx(Texcoord.x)* texSizeX,dFdy(Texcoord.y)* texSizeY)); – Damon 2011-03-11 19:08:02

1

像tibur说的那样,一个简单的方法是使用一个调试纹理,每个级别都有一个不同的颜色,如here

现在,如果您需要手动计算mipmap级别(通常是浮点值),这是另一个故事,因为您需要衍生产品,但this应该让您跟踪。

+0

谢谢你。如果有这样的事情,我需要以简单的方式做到这一点。但我没有线索,我的讲师是垃圾,我找不到任何有意义的材料。例如“将Y命令放入Y功能” – 2011-03-11 15:49:58