- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试让我的水纹理变得半透明。我添加了以下混合参数:
void Application::initialiseOpenGL() {
printf("Initialising OpenGL context\n");
context = SDL_GL_CreateContext(window);
assertFatal(context != NULL, "%s\n", SDL_GetError());
SDL_GL_SetSwapInterval(0);
glClearColor(0.0, 0.0, 0.0, 1.0);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_DEPTH_TEST);
// glEnable(GL_CULL_FACE);
// glCullFace(GL_BACK);
}
这可能是什么问题?
这些是我的着色器:
#version 300 es
layout(location = 0) in vec3 position;
layout(location = 1) in float vertexFaceIndex;
layout(location = 2) in vec2 vertexUV;
out float fragmentFaceIndex;
out vec2 fragmentUV;
out float visibility;
uniform mat4 view;
uniform mat4 viewProjection;
uniform float currentTime;
const float fogDensity = 0.005;
const float fogGradient = 5.0;
void main() {
fragmentFaceIndex = vertexFaceIndex;
fragmentUV = vertexUV;
float distance = length(vec3(view * vec4(position, 1.0)));
visibility = exp(-1.0f * pow(distance * fogDensity, fogGradient));
visibility = clamp(visibility, 0.0, 1.0);
if(vertexFaceIndex == 6.0f) {
float yVal = position.y - 0.4 +
min(0.12 * sin(position.x + currentTime / 1.8f) + 0.12 * sin(position.z + currentTime / 1.3f), 0.12);
gl_Position = viewProjection * vec4(vec3(position.x, yVal, position.z), 1.0);
}
else
gl_Position = viewProjection * vec4(position, 1.0);
}
#version 300 es
precision mediump float;
uniform sampler2D atlas;
out vec4 color;
in float fragmentFaceIndex;
in vec2 fragmentUV;
in float visibility;
const float ambientStrength = 1.1f;
const float diffuseStrength = 0.3f;
const vec3 lightDirection = vec3(0.2f, -1.0f, 0.2f);
const vec4 skyColor = vec4(0.612, 0.753, 0.98, 1.0);
const vec3 lightColor = vec3(1.0f, 0.996f, 0.937f);
const vec3 ambientColor = lightColor * ambientStrength;
// Face normals have been manually verified...
const vec3 faceNormals[7] = vec3[7](
vec3(0.0f, 0.0f, 1.0f),
vec3(0.0f, 0.0f, -1.0f),
vec3(0.0f, 1.0f, 0.0f),
vec3(0.0f, -1.0f, 0.0f),
vec3(-1.0f, 0.0f, 0.0f),
vec3(1.0f, 0.0f, 0.0f),
vec3(0.0f, 1.0f, 0.0f)
);
void main() {
vec4 textureFragment = texture(atlas, fragmentUV).rgba;
if(textureFragment.a < 0.5) discard;
float diffuseFactor = max(dot(faceNormals[int(fragmentFaceIndex)], normalize(-1.0f * lightDirection)), 0.0) * diffuseStrength;
vec3 diffuseColor = diffuseFactor * lightColor;
color = vec4((ambientColor + diffuseColor) * textureFragment.rgb, textureFragment.a);
color = mix(skyColor, color, visibility);
}
最佳答案
当使用这种多边形渲染方法时,如果有多个重叠的半透明多边形,则半透明多边形必须最后绘制并且按从后到前的顺序绘制。
如果不进行这种排序,z 缓冲区不足以正确渲染包含半透明多边形的场景。
您观察到的问题是因为先绘制了水多边形,然后绘制了它后面的 block ,但没有渲染像素,因为 z 缓冲区已经设置为水位。在绘制水时禁用 z-buffer 更新也不起作用,因为在那种情况下,稍后绘制的水下 block 将以正常颜色显示。
你需要最后打水。
关于opengl-es - OpenGL半透明四边形神器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62973716/
我有一个库项目,在 Android Studio 1.3.0 上开发并部署到 Artifactory Open Source Local Repository (3.5) 但是当我尝试在应用程序项目中
logging 是 python 标准模块,用于记录和处理程序中的日志。 功能很强大,官方文档很详细,网上也有大量的说明和教程,但是对很多初次接触的同学来说,存在一些障碍。 一是因为标准库文
我正在尝试使用 Maven 生成用于在 Vignette Portal 上部署的工件。包装与war完全一样工件但文件应该有 car取而代之。 我尝试过但无法完成的选项。 使用 war 插件并重命名最终
为什么 Points AdditiveBlending 只在从右看而不是从左看时有效?设置 depthTest:false 会解决问题,但会引发另一个问题,即点覆盖其他网格。 My fir
我对 UITextField 在动画 block 中移动时出现的工件有疑问... 在我移动我的 UITextField 之前它看起来像这样: 像这样移动之后: 我的猜测是它与 UITextField
单击此导航菜单中的第一个下拉菜单后,它将按预期加下划线,一旦菜单失去焦点(即单击页面上的其他位置),标签末尾的下划线不会被删除。 仅在 Chrome(版本 45.0.2454.85 m)中发生 我希望
我有一个简单的“hello world”C++ 项目:https://github.com/RomainGoussault/Deepov 我使用 Eclipse IDE for C/C++ Devel
使用方法有两种,可以用 XShell 或 Putty 上去命令查看,也可以生成 html 报告。 下面介绍GoAccess 在 CentOS 上的安装方法: 1. 需要安装 GeoIP, ncu
我一整天都在尝试将我的 javafx 应用程序转换为 jar 文件。我正在使用 Java 1.7 更新 7。 Oracle 有 some information ,但它似乎散落在各处。 Intelli
我实际上希望通过项目中的传递依赖项获得 powermock 1.5.6 版,但我只得到 1.4.11。这是什么意思? 最佳答案 在解析依赖项时,Maven 将更喜欢 POM 部分中指定的版本,而不是从
是否有公开可用的 maven 存储库将 Apache Tomcat 二进制分发 ZIP 托管为 maven Artifact (我的意思是可以通过 http://tomcat.apache.org 下
我希望在单击时播放 mp4 工件文件。 但是,当我点击mp4工件文件时,它看起来像下图。它不播放 如果我下载它然后我可以在我的本地 PC 上播放它。 所以我尝试了 HTML5 嵌入功能来流式传输它。我
我在 VSTS 上设置了构建/测试/发布。我们还有另一个管道(在 Linux 中)从具有给定构建 ID 的构建系统中获取构建工件。那么有没有办法从 Linux 上的 VSTS 下载构建工件?我发现不登
用 Ventoy 创建多启动 U 盘,你将永远不会缺少自己喜欢的 Linux 发行版。 给朋友和邻居一个可启动 U 盘,里面包含你最喜欢的 Linux 发行版,是向 Linux 新手介绍我们都
API 管理工具可以说是每个前端/后端开发必备的工具了,一个好的 API 管理工具可以提高团队的工作效率。 目前市面上有不少 API 相关的工具,比如 Postman、swagger 等。最近我也尝试
我有一个关于 JFrog Artifactory 用于在 Artifact 中查找“事物”的 AQL( Artifact 查询语言)的问题。 AQL 似乎非常强大,但我想知道如何使用正确的术语构建(正
我正在使用 Maven 3.1.1、Java 6 和 JBoss 7.1.3。我想在我的 JSP 上将对象呈现为 JSON,但是当我将其包含在我的 pom 中时
每次我对 POM 进行最微小的更改时,Intellij 都会删除项目结构输出目录设置中分解 Artifact 的 .war 扩展名。这会导致 Intellij 的运行/调试配置出错: Artifact
我的目标是进行对象跟踪。 我有一个 UWP c# 应用程序和链接的 c++ windows 运行时组件。在那里我可以获得对 opencv 的访问权限。 在 c# 中,MediaCapture 返回 S
遵循 http://doc.gitlab.com/ee/ci/yaml/README.html 的文档设置文件 .yml 我通过创建 artifacts 发现了问题,当构建要下载此 ZIPAPK 文件
我是一名优秀的程序员,十分优秀!