在Three.js中,是否可以使用常规HTML5 canvas元素直接绘制到WebGL区域(例如,抬头显示或UI元素)?
如果是这样,您如何获得上下文以及可用的绘图命令?
如果没有,是否有另一种方法可以通过其他Three.js或特定于WebGL的绘图命令与Three.js合作完成此任务?
我的备份计划是使用HTML div作为叠加层,但我认为应该有更好的解决方案.
谢谢!
我想在UITabBarController设置中在整个屏幕上叠加HUD风格的透明图形.执行此操作的按钮位于第一个选项卡的屏幕(FirstViewController)中,覆盖图还应覆盖选项卡...这可能吗?
我正在尝试使用Swift和Scenekit.构建Mac OS X应用程序.让3D场景工作似乎很容易.但是没有某种2D高分,雷达显示,速度指示器等的场景是什么?我希望SpriteKit场景能够无缝集成到SceneView中,但是我没有找到关于这个的文档.
我能想到的最明显和唯一的方法是将SKView放在SceneView上并分别渲染每个.但是有更优雅的方式吗?
包括内置地址簿在内的多个应用程序使用半透明的HUD窗口,带有大阴影文本.我想在我的Cocoa Mac应用程序中实现一个类似的窗口.
在某处可以自由实现这种窗口吗?
如果没有,实施它的最佳方法是什么?
我想要做的是从导航应用程序中读取下一个转弯方向,假设您已经有一个目标集.例如,我需要以某种方式监视我自己内部导航应用程序给出的当前驾驶指令(参见附件).
我尝试过这样做:检测新的Android通知以从通知栏中读取方向文本.虽然,这似乎不适用于持久性通知(即通知你不能"滑动"远离通知栏).
无论如何,一旦导航应用程序运行,我可以提取此信息吗?如果您想知道,我想使用这些数据通过蓝牙发送到外部设备,以显示我车内的Heads Up Display的下一个转弯.
我在填充TableView时显示HUD,但它似乎显示在TableView后面(tableview分隔符打破了hud).
这是TableViewController中的代码:
- (void)viewDidLoad {
[super viewDidLoad];
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeText;
hud.labelText = @"Loading";
// Populate the table
[self getTableData];
self.tableView.rowHeight = 90;
}
Run Code Online (Sandbox Code Playgroud)
它只在TableViews中执行此操作.
如何制作有多条线的HUD?他是我的代码,但labelText是一行
HUD = [MBProgressHUD showHUDAddedTo:[[TTNavigator navigator] window] animated:YES];
HUD.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"noImage.png"]];
HUD.mode = MBProgressHUDModeCustomView;
HUD.delegate = self;
HUD.labelText = @"text1 \n text2";
[HUD hide:YES afterDelay:3];
Run Code Online (Sandbox Code Playgroud) 我试图在ARM Linux平台上用C语言编写的OpenGL ES 2.0应用程序上呈现HUD.
我目前正在使用靠近近剪裁平面放置的2个三角形,并将纹理平铺到它们上面.纹理是屏幕的大小,除了我有文字渲染的部分外,它们大多是透明的.使用Pango/Cairo生成纹理
如果我打开HUD(取消对render_ui的调用),我目前的性能达到了50%(从60fps到30fps).
这是渲染HUD的代码:
void render_ui(OGL_STATE_T *state) {
glUseProgram(state->uiHandle);
matIdentity(modelViewMatrix);
matTranslate(modelViewMatrix, 0, 0, -0.51);
const GLfloat *mvMat2 = modelViewMatrix;
glViewport(0,0,state->screen_width, state->screen_height);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glBindBuffer(GL_ARRAY_BUFFER, state->uiVB);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, state->uiIB);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, state->uiTex);
glUniform1i(_uiTexUniform, 0);
glUniformMatrix4fv(_uiProjectionUniform, 1, 0, pMat);
glUniformMatrix4fv(_uiModelViewUniform, 1, 0, mvMat2);
glVertexAttribPointer(_uiPositionSlot, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);
glVertexAttribPointer(_uiColorSlot, 4, GL_FLOAT, GL_FALSE, sizeof(Vertex),
(GLvoid *) (sizeof(GLfloat) * 3));
glVertexAttribPointer(_uiTexCoordSlot, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex),
(GLvoid *) (sizeof(GLfloat) * 7));
glEnableVertexAttribArray(_uiPositionSlot);
glEnableVertexAttribArray(_uiColorSlot);
glEnableVertexAttribArray(_uiTexCoordSlot);
glDrawElements(GL_TRIANGLES, uiIndicesArraySize / uiIndicesElementSize,
GL_UNSIGNED_BYTE, 0);
glDisableVertexAttribArray(_uiTexCoordSlot); …
Run Code Online (Sandbox Code Playgroud) 我已经习惯了 iPhone API,而且我在 iPhone 应用程序中经常使用 MBProgressHUD,但是自从我开始为 Mac 开发应用程序后,我注意到我不能使用 MBProgressHUD。是否有替代方案可以与 MBProgressHUD 完成相同的工作?我注意到苹果在他们的操作系统中也有它。
我想制作一个透明的无框架 QWidget,它看起来像是在另一个 QWidget 之上渲染的。
我的目的是使用DirectX和Qt在 3D 游戏之上创建一个HUD。
到目前为止,在我的努力中,我的 QMainWindow 包含一个自定义的 DirectX-Widget,它是通过在 DirectX 中创建交换链时将普通 QWidget 的 HWND 传递给 DirectX 创建的,然后使用 QTimer 创建自定义渲染循环(请参阅代码以下)。
然后我尝试渲染一个新的叠加层在 QMainWindow 顶部
通过在叠加上使用以下标志,我可以使其行为与我想要的类似,但我仍然无法摆脱框架。
setWindowFlags(Qt::WindowStaysOnBottomHint);
setAttribute(Qt::WA_TranslucentBackground, true);
setAttribute(Qt::WA_TransparentForMouseEvents);
Run Code Online (Sandbox Code Playgroud)
左图显示了它真正的样子,借助 MS Paint 的魔力,右图就是我想要的样子。
正如您从图片中看到的,透明度在 DirectX 小部件之上不起作用,但它似乎在普通小部件(例如工具栏)之上起作用之上起作用,当我尝试使用 QPainter 之类的东西时,情况似乎也是如此而不是 DirectX。
有谁知道为什么会发生这种情况?关于如何摆脱 DirectX 中的框架或实现类似的效果有什么建议吗?
源代码
您可以从此处下载完整的Visual Studio 2010项目项目。
可能需要适用于 Qt4 的 Visual Studio Add-in 1.1.11和2010 年 6 月的 DirectX SDK …
hud ×10
cocoa ×2
ios ×2
iphone ×2
macos ×2
objective-c ×2
android ×1
c ×1
cocoa-touch ×1
directx ×1
gps ×1
navigation ×1
qt ×1
scenekit ×1
sprite-kit ×1
swift ×1
three.js ×1
transparency ×1
uitableview ×1
webgl ×1