问题标签 [z-order]

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.

0 投票
4 回答
4778 浏览

opengl - 深度测试默认在 OpenGL 中反转,还是我弄错了?

我一直在玩 OpenGL 整整一周或同等时间。在 2D 之后,我现在正在尝试 3D。我想重现您在http://johnnylee.net/projects/wii/上的第三个视频中看到的 3D 场景。
我很难让纹理和深度的一切都正常工作。

我最近遇到了 2 个在视觉上具有相同影响的问题:

  • 一种使用我为 2D 找到的技术在 3D 中无法很好融合的纹理。
  • 一个对象出现在顶部上方的底部。就像这里暴露的问题:OpenGL中的深度缓冲区

我已经解决了这两个问题,但我想知道我是否做对了,尤其是第二点


对于第一个,我想我明白了。我有一个圆形目标的图像,圆盘外的任何东西都带有 alpha。它在 OpenGL 中加载得很好。它后面的一些(由于我的 z 排序问题)其他目标被我用来绘制它的自然正方形四边形的透明区域所隐藏。

这样做的原因是纹理的每个部分都被假定为对于深度缓冲区是完全不透明的。使用glEnable(GL_ALPHA_TEST)with 测试glAlphaFunc(GL_GREATER, 0.5f)使纹理的 alpha 层充当每像素(布尔)不透明度指示器,从而使混合变得非常无用(因为我的图像具有布尔透明度)。

补充问题:顺便说一句,是否有一种方法可以为 alpha 测试指定不同的来源而不是用于混合的 alpha 层?


其次,我找到了解决问题的方法。在清除颜色和深度缓冲区之前,我已将默认深度设置为 0 glClearDepth(0.0f),并且我使用了“更大”深度函数glDepthFunc(GL_GREATER)

对我来说看起来很奇怪的是深度是 1.0,深度函数GL_LESS默认是“少”。我基本上是在反转它,这样我的对象就不会被反转显示......

我在任何地方都没有看到过这样的黑客,但另一方面,我没有看到任何地方以错误的顺序系统地绘制对象,无论我绘制它们的顺序是什么!


好的,这是现在可以按我想要的方式工作的代码(精简,我希望不是太多):

0 投票
3 回答
32230 浏览

java - Java Swing 组件上的 Z 顺序

我一直在寻找有关此的一些提及,但我找不到任何实质性信息。有没有办法改变 Swing 组件的 z 顺序,或者至少改变绘制顺序,使它们看起来高于其他?

0 投票
2 回答
2127 浏览

cocos2d-iphone - Cocos2d 平铺地图添加精灵

在 cocos2d-iphone 的等距平铺地图 z-ordering 示例中,他们使用一个已经在平铺地图中的对象作为玩家精灵,它被渲染为在树木中移动。

有没有办法使用随机CCNode创建的代码(不在 tmx 文件中,也不是精灵表的一部分),并使用 tilemap 正确地进行 z 排序?addChild 在 a 上不受支持CCTMXLayer,并且在使用时会出现错误:'addChild: is not supported on CCTMXLayer. Instead use setTileGID:at:/tileAt:'.

必须有一种方法可以使用 cocos2d 的 API 或一些 z-buffer 技术正确地使用 tilemap进行CCNode(比方说简单的)z-order。CCSprite任何指针?

0 投票
1 回答
910 浏览

java - 使用 MigLayout 和绝对定位时有什么方法可以设置 z 顺序?

我正在使用 MigLayout 和绝对定位来覆盖面板上的繁忙指示器。有时指示器出现在面板后面,有时在前面。有没有什么办法可以指定z-order来保证指标总是出现在前面?

我在一篇文章中看到“z-order 不取决于布局管理器”。如果是这样,这取决于谁,可以控制吗?

0 投票
1 回答
853 浏览

.net - 在“全屏模式”结束后恢复“TopMost”窗口行为(.NET)

我有一个(Windows 窗体)应用程序,它由一个带有“TopMost”属性集的窗口组成。如果应用程序(例如 PowerPoint)暂时进入全屏模式,则我的窗口的“TopMost”行为不会恢复(即它将保持隐藏在最大化的 PowerPoint 窗口中)。有趣的是,这只发生在我的应用程序在另一个应用程序之前启动时——如果另一个应用程序在我的事情按预期工作之前启动。激活窗口(手动单击它)可以恢复所需的行为,但不幸的是,这不是我的解决方案。

我不确定是什么导致了这个问题,我会对修复或解决方法非常感兴趣。

由于这可能是与操作系统相关的问题,我应该指出我使用的是 Windows 7 64 位。

谢谢,彼得

0 投票
1 回答
478 浏览

c# - DirectX Z 顺序

我必须使用托管 DirectX 绘制地图。地图以 MapInfo 格式(线、折线、区域/多边形)到达。多边形已经被三角剖分(使用 GLUtesselator 完成)。

想法:

  1. GPS 坐标转换为 x,y 点(墨卡托投影)
  2. 我使用 PositionColored VertexFormat
  3. 视图的中心是 [x,y] (可以通过鼠标移动修改)
  4. 相机始终定位到 [x,y,z] 其中 z 是缩放(默认为-100,可以通过鼠标滚轮修改)
  5. 相机目标是:[x,y,0],相机向上:[0,1,0]
  6. 地图的图层由 Z 定位(+1.0、0.99、0.98、0.97...等)

我已经可以做到:

  1. 画线和折线
  2. 画一层多边形

我的问题是:当我想绘制所有图层时,我只看到其中一个。我认为 z 排序存在一些问题。我应该怎么做才能解决这个问题?修改渲染状态?如果我可以像在 GDI 中那样绘制(首先在后面,最后在前面),那将是最好的。

其他问题:如何获取鼠标光标下像素的坐标?(在地图的 GDI 版本中我可以这样做,因为我使用自己的视口进行渲染,但现在 Directx 可以做所有事情)

谢谢!

0 投票
1 回答
752 浏览

android - Android ViewFlipper ZOrder

我正在尝试使用视图翻转器为 2 个视图之间的过渡设置动画。似乎默认情况下,ViewFlipper 将 Out 动画按 Z 顺序放置在 In 动画之上。有没有办法让传入的动画显示在传出的动画上?

谢谢

0 投票
1 回答
1382 浏览

wpf - WPF网格中的ZOrder行为?

下面的代码包含一个简单的网格,在网格的中间列有一个按钮。按钮宽度(有意)大于放置它的列。请注意,按钮的左侧部分可见,右侧不可见。我该怎么做才能使左右按钮部分不可见?按钮的右侧部分位于右侧网格列的 z 下方,但按钮的左侧部分位于左侧网格列的 z 上方。我需要左按钮部分也被左网格列隐藏。

这是 XAML 的简化版本,我正在尝试为“电影片段”制作动画。胶片应放置在左右网格柱的z-下方和中间部分的z-上方。动画效果很好,但用户在左侧看到了一段时间的控件,她不应该看到这些控件应该被左侧网格列“覆盖”。

0 投票
5 回答
8297 浏览

.net - 为什么我们激活 Word 时它没有“出现”?

我们的 winforms 应用程序与 MS Word 交互,我们在生成文档时运行此代码,并且我们希望在我们的应用程序前面的 Word 中显示它:

当推广到运行 Office 2007 的 XP 机器时,这将按预期工作。

运行 Office 2010的 Win7 机器上,文档在我们的应用程序后面加载并在任务栏上闪烁。

有任何想法吗?

0 投票
1 回答
1427 浏览

.net - 如何在 WPF 中将窗口保持在最后?

我有一个生成全屏窗口的小型 .NET 程序。我想将此窗口保留在最后面的窗口(即其他窗口应在其顶部打开,并且单击时不应出现在最前面)。在 Windows Presentation Foundation 下有什么实用的方法可以做到这一点吗?