- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写跨平台应用程序。它应该在 Android 设备上运行。
我想使用 dFdx/dFdy 进行抗锯齿。但是,不幸的是,glsl es 2.0 不支持导数。
我可以用什么东西代替 dFdx/dFdy 吗? IE。 1/sprite_width, 1/sprite_height 以屏幕像素为单位。
正如我所说,我需要它才能在 Android 设备上运行。我看到我的设备支持 GL_OES_standard_derivatives,它允许它使用这个函数。所有android opengl es 2.0设备都支持吗?
最佳答案
正如我所说,许多 Opengl ES 2.0 设备都支持 GL_OES_standard_derivatives 扩展。
但是对于那些不这样做的人,我做了这个解决方法:
float myFunc(vec2 p){
return p.x*p.x - p.y; // that's our function. We want derivative from it.
}
// this calculated in vertex shader
// width/height = triangle/quad width/height in px;
vec2 pixel_step = vec2(1/width, 1/height);
float current = myFunc(texCoord);
float dfdx = myFunc(texCoord + pixel_step.x) - current;
float dfdy = myFunc(texCoord + pixel_step.y) - current;
float fwidth = abs(dx) + abs(dy); // from khronos doc #http://www.khronos.org/registry/gles/extensions/OES/OES_standard_derivatives.txt
附言我得到的结果与 glsl 内置函数非常接近,有点模糊(在我的着色器中)。为了解决这个问题,我在 1/1.75 上添加了 multiply pixel_step。如果有人知道原因,请告诉我。
关于android - glsl es dFdx/dFdy 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22442304/
我正在编写跨平台应用程序。它应该在 Android 设备上运行。 我想使用 dFdx/dFdy 进行抗锯齿。但是,不幸的是,glsl es 2.0 不支持导数。 我可以用什么东西代替 dFdx/dFd
我正在使用一个 fragment 着色器,它使用 dFdy dFdx 函数来计算以平坦的外观面对面观看。这个shader在gles 2.0和3.0中一直运行正常。令人费解的是,着色器在 Android
我是一名优秀的程序员,十分优秀!