标签: rendering

OpenGL:快速离屏渲染

我需要使用OpenGL在屏幕外渲染相当多的(数万个)图像.
我在Windows下运行并使用QT作为框架.解决方案可以只是Windows,它并不重要.

从我发现使用Google的内容来看,有很多选项可以做到这 一点.这篇看似相当过时的文章提出了几种方法,其中相关的方法是:

  • 特定于Windows - 使用CreateDIBSection并以某种方式将纹理绑定到它.
  • 使用我的卡上似乎支持的pbuffers扩展.

该线程(消息6)建议使用QT特定的方式QGLWidget::renderPixmap

我的问题是 - 哪一个是最快的方式?pbuffers似乎是最安全的赌注,因为它保证在硬件上执行但不使用CreateDIB方法也通过硬件?QT方法怎么样?这个似乎存在一些上下文创建问题.当然我不想为我创建的每个图像创建新的上下文.
有没有人对此有一些很好的经验?


编辑:回答评论 -
我有一个不变的场景,我从许多不同的角度渲染它.现在,图像将返回给用户,并由CPU处理.可能在未来它们将在GPU上进行处理.

opengl 3d performance rendering off-screen

5
推荐指数
1
解决办法
8974
查看次数

在窗口调整大小或在选项卡之间切换之前,IE7不会呈现页面的一部分

我有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)

asp.net rendering quirks-mode internet-explorer-7

5
推荐指数
1
解决办法
5920
查看次数

有人可以描述Ken Silverman的Voxlap引擎使用的算法吗?

从我收集到的,他使用稀疏的体素八叉树和光线投射.似乎他没有使用opengl或direct3d,当我看到游戏Voxelstein时,看起来微型立方体实际上是被绘制而不是仅仅是一堆2d方形.这让我措手不及我不知道他如何在没有opengl或direct3d的情况下做到这一点.

我试着阅读源代码,但我很难理解发生了什么.我想实现类似的东西,并希望算法这样做.

我对他如何进行渲染,剔除,遮挡和照明感兴趣.任何帮助表示赞赏.

opengl graphics rendering raytracing real-time

5
推荐指数
2
解决办法
4302
查看次数

JTable单元格渲染

我正在获取数据库的数据并显示在表格中.

我的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,我怎么能实现这个目标?

除此之外,我需要检查数据时间是否小于今天,然后禁用该行

rendering timestamp jtable

5
推荐指数
1
解决办法
1855
查看次数

使用OpenGL功能进行非常基本的体积渲染(用于教学目的)

我有一些学生正在进行体积渲染项目.我正在尝试设计最基本的可能示例来启动它们.我想要做的是有一个窗口,并根据通过底层体积数据集的光线投射独立设置窗口中的每个像素.例如,可以使用Windows API函数轻松完成此操作.但是我们想要使用OpenGL.

我有两个想法:

  1. 使用过剩来创建一个窗口.
  2. 使用一些OpenGL函数手动设置窗口中的每个像素.

或者,稍微复杂一点......

  1. 使用过剩来创建一个窗口.
  2. 创建与窗口大小相同的屏幕外纹理.
  3. 根据光线投射的结果,在纹理中单独设置每个像素.
  4. 将纹理翻转到窗口内容.

所以我的问题是双重的:有没有比这些选择更好的方法?有人能指出我相关的OpenGL函数来完成这些方法吗?

c++ opengl rendering

5
推荐指数
1
解决办法
5897
查看次数

在锁定的系统上渲染3D场景

我使用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机器上测试这个,而我登录,因为调试变得非常困难.这可能是个问题吗? …

c# opengl directx rendering

5
推荐指数
1
解决办法
447
查看次数

matplotlib后端对渲染格式有什么限制?

我对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可以生成的格式和渲染类型(矢量与栅格)方面起什么作用?

python format rendering matplotlib

5
推荐指数
1
解决办法
178
查看次数

Sitecore 8:通过默认呈现自动填充占位符

我正在玩动态占位符,并被一个预先填充的概念所震撼.有没有办法为我的一个占位符选择默认渲染,这将避免在经验编辑器中的"选择渲染"对话框?

场景:我有一个名为"PageHead"的渲染,它有三个渲染.其中一个是占位符"PageTeaserPh",它目前允许两个渲染:一个是"PageTeaser",第二个是"PageTeaserWithImage".我希望占位符"PageTeaserPh"始终将渲染选为"PageTeaser",因此避免使用"选择渲染"对话框.

我做了一些功课,并想知道这是否与标准值相关(我们可以在模板级别使用它;虽然不能确定渲染)并且我也听说过命令模板概念(不是深入的).

任何和所有帮助表示赞赏.

rendering sitecore contentplaceholder sitecore8 experience-editor

5
推荐指数
1
解决办法
1806
查看次数

Unity:如何使用具有多线程图形作业的Camera.Render的所有CPU内核?优化 - 不工作?

如何使用多线程图形作业优化?

我有一个项目(较少的游戏,更多的是一个应用程序),它在一个场景中使用了数十个摄像机,所有这些都是一次渲染.(不要问为什么,必须这样!)

毋庸置疑,在运行应用程序时,由于渲染管道是单线程的,因此几乎可以实现一个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.

cpu performance multithreading rendering unity-game-engine

5
推荐指数
1
解决办法
2442
查看次数

如何限制react-redux连接更新重新渲染到特定的状态分支?

我有一个动作和减速器来更新全局计数器.此操作将在快速间隔内触发.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都应用于完整状态.不确定是否相关.

javascript rendering reactjs redux react-redux

5
推荐指数
2
解决办法
1829
查看次数