我需要使用OpenGL在屏幕外渲染相当多的(数万个)图像.
我在Windows下运行并使用QT作为框架.解决方案可以只是Windows,它并不重要.
从我发现使用Google的内容来看,有很多选项可以做到这 一点.这篇看似相当过时的文章提出了几种方法,其中相关的方法是:
CreateDIBSection并以某种方式将纹理绑定到它.该线程(消息6)建议使用QT特定的方式QGLWidget::renderPixmap
我的问题是 - 哪一个是最快的方式?pbuffers似乎是最安全的赌注,因为它保证在硬件上执行但不使用CreateDIB方法也通过硬件?QT方法怎么样?这个似乎存在一些上下文创建问题.当然我不想为我创建的每个图像创建新的上下文.
有没有人对此有一些很好的经验?
编辑:回答评论 -
我有一个不变的场景,我从许多不同的角度渲染它.现在,图像将返回给用户,并由CPU处理.可能在未来它们将在GPU上进行处理.
我有IE7的问题.
我有一个固定的布局,用于保持标题和侧面板固定在页面上,只留下"主要内容"区域开关可以愉快地滚动它的内容.
Twitpic上的布局http://twitpic.com/show/thumb/e32q7.png
这种布局对于IE6和IE8非常适用,但有时一页可能会"隐藏"应该在"主要内容"区域中显示的内容.
页面完成加载就好了.一瞬间IE7将渲染主要内容就好了,然后它会立即将其隐藏在视图中...某处...当有足够的内容强制"主要内容"区域时,它似乎只会遇到此问题滚动.
通过调整窗口大小或切换到另一个打开的选项卡再返回将导致IE7按预期显示页面.
请注意,兼容模式下IE8会出现同样的问题,但在IE8模式下页面会正确呈现.
如果需要,我可以附加我使用的基本CSS样式,但我首先想看看这是否是IE7的已知问题.
IE7是否存在定位布局和溢出滚动的问题,有时会忘记完全正确渲染页面,直到某些窗口重绘事件强制完成渲染?
请记住,这个完全相同的布局用于站点中的多个页面,因为它是在母版页中设置的.它只是(在这种情况下)一个页面遇到了这个问题.
具有完全相同布局的其他页面可以正确呈现.即使主要内容足够滚动也是如此.
最新更新:添加示例母版页和CSS
请注意,相同的布局对于应用程序中的所有页面都是相同的.IE7的问题只发生在一个这样的页面上.所有其他页面都可以在IE7中正确呈现.只有一个页面使用完全相同的布局,它有时会隐藏"工作空间"div中的内容.
母版页
<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="shared_templates_MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link rel="Stylesheet" type="text/css" href="~/common/yui/2.7.0/build/reset-fonts/reset-fonts.css" runat="server" />
<link rel="Stylesheet" type="text/css" href="~/shared/css/layout.css" runat="server" />
<asp:ContentPlaceHolder ID="head" runat="server" />
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div id="app-header">
</div>
<div id="side-panel">
</div>
<div id="work-space">
<asp:ContentPlaceHolder ID="WorkSpaceContentPlaceHolder" runat="server" />
</div> …Run Code Online (Sandbox Code Playgroud) 从我收集到的,他使用稀疏的体素八叉树和光线投射.似乎他没有使用opengl或direct3d,当我看到游戏Voxelstein时,看起来微型立方体实际上是被绘制而不是仅仅是一堆2d方形.这让我措手不及我不知道他如何在没有opengl或direct3d的情况下做到这一点.
我试着阅读源代码,但我很难理解发生了什么.我想实现类似的东西,并希望算法这样做.
我对他如何进行渲染,剔除,遮挡和照明感兴趣.任何帮助表示赞赏.
我正在获取数据库的数据并显示在表格中.
我的getColumnClass是
@Override
public Class<? extends Object> getColumnClass(int column) {
return getValueAt(0, column).getClass();
}
Run Code Online (Sandbox Code Playgroud)
当我打印值时,我得到类名为java.sql.Timestamp,但是当它显示我有问题时,它只显示dd/MM/yyyy,但我需要它来显示dd/MM/yyyy HH :mm,我怎么能实现这个目标?
除此之外,我需要检查数据时间是否小于今天,然后禁用该行
我有一些学生正在进行体积渲染项目.我正在尝试设计最基本的可能示例来启动它们.我想要做的是有一个窗口,并根据通过底层体积数据集的光线投射独立设置窗口中的每个像素.例如,可以使用Windows API函数轻松完成此操作.但是我们想要使用OpenGL.
我有两个想法:
或者,稍微复杂一点......
所以我的问题是双重的:有没有比这些选择更好的方法?有人能指出我相关的OpenGL函数来完成这些方法吗?
我使用SlimDX在c#中编写了一个基于Direct3D 9的渲染引擎.在一个新项目中,我现在需要使用webservice分发加载的3d场景的图片.问题是,为了渲染任何东西,我需要一个Direct3d设备.有没有办法在没有用户登录系统且桌面未被锁定的情况下创建direct3d设备?
如果那是不可能的,有没有人知道一个变通方法?最后,我需要一个可执行文件,它可以使用一些本地用户帐户或服务从任务计划程序运行,该服务器定期从某些视点呈现场景的图片.
引擎分为两部分:引擎本身和渲染器.因此,如果没有其他方法,那么我也可以使用opengl或任何其他技术实现新的渲染器,这些技术允许渲染而不具有可见的形式.
编辑:
到目前为止我所拥有的是:
protected override void OnContinue() {
base.OnContinue();
NativeFunctions.SafeWindowStationHandle hwinsta = NativeFunctions.WindowStation.OpenWindowStation(
"WinSta0",
true,
NativeFunctions.AccessMask.WINSTA_ALL_ACCESS);
if(hwinsta == null || hwinsta.IsClosed || hwinsta.IsInvalid)
Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error());
if(NativeFunctions.WindowStation.SetProcessWindowStation(hwinsta.DangerousGetHandle())) {
NativeFunctions.SafeDesktopHandle ptrDesktop = NativeFunctions.WindowStation.OpenInputDesktop(
0,
true,
NativeFunctions.AccessMask.DESKTOP_CREATEWINDOW);
if(ptrDesktop.IsClosed || ptrDesktop.IsInvalid)
return;
if(!NativeFunctions.WindowStation.SetThreadDesktop(ptrDesktop.DangerousGetHandle()))
return;
Log log = Logger.Instance.CreateLog("DXService", true, true, false);
log.LogMessage("Desktop set, creating D3D-Object.", LOGMESSAGELEVEL.CRITICAL, true);
Direct3D direct3D = new Direct3D();
log.LogMessage("Direct3D object created, creating device.", LOGMESSAGELEVEL.CRITICAL, true);
if(direct3D.AdapterCount == 0) {
log.LogMessage("FATAL: direct3D.AdapterCount == 0");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是最小的WindowsService的一部分.我将重要的代码放入OnContinue函数中,因为它比启动代码更容易调试.我赋予此服务与活动桌面交互的权限.当我作为本地系统帐户运行服务时,桌面和windowstation工作但GraphicsAdapter的数量仍为0,当我使用专用用户帐户运行服务时,我甚至无法打开WindowStation.还有什么我可以尝试或我做错了吗?我在Windows 7机器上测试这个,而我登录,因为调试变得非常困难.这可能是个问题吗? …
我对matplotlib在确定可以呈现的格式时使用的后端所扮演的角色感到困惑.
例如,文档说 'agg'后端生成PNG,"光栅图形"但是如果我
import matplotlib
matplotlib.use(‘agg’)
import matplotlib.pyplot
fig, ax = matplotlib.pyplot.subplots()
#...
Run Code Online (Sandbox Code Playgroud)
我可以用
fig.savefig(“thefig.pdf”)
Run Code Online (Sandbox Code Playgroud)
生成PDF,或
fig.savefig(“thefig.svg”)
Run Code Online (Sandbox Code Playgroud)
制作矢量图形.
后端在限制matplotlib可以生成的格式和渲染类型(矢量与栅格)方面起什么作用?
我正在玩动态占位符,并被一个预先填充的概念所震撼.有没有办法为我的一个占位符选择默认渲染,这将避免在经验编辑器中的"选择渲染"对话框?
场景:我有一个名为"PageHead"的渲染,它有三个渲染.其中一个是占位符"PageTeaserPh",它目前允许两个渲染:一个是"PageTeaser",第二个是"PageTeaserWithImage".我希望占位符"PageTeaserPh"始终将渲染选为"PageTeaser",因此避免使用"选择渲染"对话框.
我做了一些功课,并想知道这是否与标准值相关(我们可以在模板级别使用它;虽然不能确定渲染)并且我也听说过命令模板概念(不是深入的).
任何和所有帮助表示赞赏.
rendering sitecore contentplaceholder sitecore8 experience-editor
如何使用多线程图形作业优化?
我有一个项目(较少的游戏,更多的是一个应用程序),它在一个场景中使用了数十个摄像机,所有这些都是一次渲染.(不要问为什么,必须这样!)
毋庸置疑,在运行应用程序时,由于渲染管道是单线程的,因此几乎可以实现一个CPU内核.结果,它降低了帧速率.(GPU,内存等远低于100%负载 - CPU是这里的瓶颈)
看到Unity有一个名为"图形作业(实验)"的选项让我感到非常欣慰,该选项专门用于在多个线程之间拆分渲染,因此,多个核心.
但是,启用此选项并将DirectX12设置在图形API列表的顶部,我希望现在可以充分利用CPU,即所有CPU内核都可以进行主动渲染.然而,似乎仍然是应用程序仍然只利用我的CPU潜力的40%,同时提供低帧速率.当然,它应该只有在最大化CPU时才会降低帧速率?似乎并没有以不同的方式使用各个核心.为什么我不能通过利用接近100%的CPU上的所有内核(总共包括正在运行的任何其他程序)来最大化输出帧速率?
基本上我想知道如何让Unity充分利用我所有的CPU核心,以便尽可能高的帧速率,同时在我的场景中同时拥有尽可能多的摄像头...... ...我想想图形工作会解决这个问题?...除非我错误地使用它们或没有使用正确的设置组合?
顺便说一句,我的CPU是i7-4790 @ 3.6ghz,我的GPU是使用DX12的980Ti.32GB的RAM.
我有一个动作和减速器来更新全局计数器.此操作将在快速间隔内触发.reducer为每个动作返回一个新的状态副本.减速机看起来像:
import { handleActions } from 'redux-actions';
import { sceneTick } from './actions';
export default (state, action) => handleActions({
[sceneTick]: (state, action) => {
return {
...state,
loop: action.payload,
}
},
Run Code Online (Sandbox Code Playgroud)
我在各种React组件上使用react-redux的connect方法.并非所有组件都关心此循环计数器.因为我在每个tick上都在reducer中返回一个新状态,所有订阅的组件connect都会mapDispatchToProps被执行,这会导致不必要的React渲染调用.
其中一个组件看起来像:
const mapStateToProps = (state, props) => {
return {
viewport: state.viewport,
assets: state.assets,
};
};
export default connect(mapStateToProps, {})(Component)
Run Code Online (Sandbox Code Playgroud)
即使该组件没有依赖,state.loop它也会被触发重新渲染.这会导致重新渲染,重叠渲染,多次渲染,不必要的渲染,性能问题以及不需要重新渲染的组件中的意外行为.
更新
我也应该添加我不在combineReducers这里使用,所有reducers都应用于完整状态.不确定是否相关.
rendering ×10
opengl ×4
performance ×2
3d ×1
asp.net ×1
c# ×1
c++ ×1
cpu ×1
directx ×1
format ×1
graphics ×1
javascript ×1
jtable ×1
matplotlib ×1
off-screen ×1
python ×1
quirks-mode ×1
raytracing ×1
react-redux ×1
reactjs ×1
real-time ×1
redux ×1
sitecore ×1
sitecore8 ×1
timestamp ×1