<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>中文 &#187; nightmare_</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/nightmare_/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Sat, 26 May 2012 06:34:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>小谈CAD制图和游戏3D的区别</title>
		<link>http://software.intel.com/zh-cn/blogs/2010/12/16/cad3d/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2010/12/16/cad3d/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 11:02:23 +0000</pubDate>
		<dc:creator>nightmare_</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[图形和视觉计算]]></category>
		<category><![CDATA[游戏]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2010/12/16/cad3d/</guid>
		<description><![CDATA[小谈CAD制图和游戏3D的区别 并不是所有人学3D都是为了做游戏，但如今3D学习资料大多是游戏背景的情况下，会让不少走CAD路线的人走错路。 游戏领域，3D向着实时电影级效果发展，强调视觉效果，为了获得足够的运行时性能，要把尽可能多的计算放到制作阶段预处理。而CAD领域，画线能力远比视觉效果重要，模型往往需要实时编辑，对单纯的三角面的吞吐量需求很高，需要在大量的线和面中作精准的选取操作，而对硬件加速需求上，OpenGL 1.2的功能基本就够了。 这些年GPU技术的飞速发展，主要是为了游戏。但这些改进，大多对CAD影响很小。这也是OpenGL ARB委员会的传统CAD厂商对改进OpenGL并不热衷的原因。与游戏代码若干年就重写一次不同，CAD的程序可不希望经常重写，他们需要一个稳定的API，最好50年都不变，但是新的硬件需要提供更好的性能。这些软件大多推荐用户使用专业级显卡，而专业级显卡的一个特点就是图元吞吐量都非常大。 当然，CAD有时也需要效果迷人的成品图，但这一般都是使用高级离线渲染，多花点时间，做成远胜实时渲染的效果。软件离线渲染器似乎可以算是另一个领域。对于工业3D而言，一般会选用一个现成的离线渲染器，而不是自己花时间写一个。 不过，随着GPU通用计算的兴起，也为CAD领域带来了一些新的可能性。大量的计算，尤其是曲面三角化等，有可能交由GPU来处理。不过，这应该不会导致架构上的变化，而只是一些底层API实现上的优化，因为OpenGL本来就是一个良好的工业3D的绘图抽象层。 但这和游戏领域的需求是矛盾的。OpenGL ARB在争论中曾经提出分成两个profile，一个CAD profile，一个game profile。但这个提议被否决了，因为人们不希望出现两个OpenGL。争论在持续了若干年后终于有了进展，新的方案是一个面向新硬件加速架构的core profile和兼容旧程序的compatibility profile。但这对CAD领域来说仍然是很不理想的，因为这意味着compatibility profile的支持会越来越少，他们早晚得重写渲染代码。至于CAD厂商为什么会接受这个提案，从Autodesk公开的的一篇report里能看出一点，他们颇受参差不齐的OpenGL驱动质量之苦。OpenGL是在硬件加速时代之前的产物，功能繁杂，并不是所有功能组合都可以加速，以致很多驱动实现不但bug多多，而且行为不一。这导致测试、补救的代价非常之高，以致3DSMAX 7之后缺省使用D3D做加速后端。如此，则一个新的精简的OpenGL core profile是一个合理的选择。 但是，并不是所有的CAD软件都像3DSMAX这样可以切换渲染后端，有一个渲染抽象层。而且，core profile的API非常的贴近硬件，并不适合直接用来做高层渲染逻辑。总体来说，传统的OpenGL API本身就是一个面向CAD的良好的抽象层，很多年内它仍然会是，构架在OpenGL之上的CAD程序并不十分需要一个新的抽象层。所以OpenGL compatibility profile其实就是用core profile API实现的传统OpenGL API，就是这个抽象层的一个标准实现。如果显卡不提供compatibility profile了，CAD厂商仍然可以自己提供这个实现，又不用重写以前的代码，又可以利用未来新硬件的加速功能。而且，鉴于3D硬件的发展速度，D3D没几年就更新一代，每代之间完全不兼容，贴近硬件的OpenGL core profile也有这种风险。compatibility profile则为CAD软件提供了一层安全垫，只要更换不同的实现就可以了。]]></description>
			<content:encoded><![CDATA[<p>小谈CAD制图和游戏3D的区别</p>
<p>并不是所有人学3D都是为了做游戏，但如今3D学习资料大多是游戏背景的情况下，会让不少走CAD路线的人走错路。</p>
<p>游戏领域，3D向着实时电影级效果发展，强调视觉效果，为了获得足够的运行时性能，要把尽可能多的计算放到制作阶段预处理。而CAD领域，画线能力远比视觉效果重要，模型往往需要实时编辑，对单纯的三角面的吞吐量需求很高，需要在大量的线和面中作精准的选取操作，而对硬件加速需求上，OpenGL 1.2的功能基本就够了。</p>
<p>这些年GPU技术的飞速发展，主要是为了游戏。但这些改进，大多对CAD影响很小。这也是OpenGL ARB委员会的传统CAD厂商对改进OpenGL并不热衷的原因。与游戏代码若干年就重写一次不同，CAD的程序可不希望经常重写，他们需要一个稳定的API，最好50年都不变，但是新的硬件需要提供更好的性能。这些软件大多推荐用户使用专业级显卡，而专业级显卡的一个特点就是图元吞吐量都非常大。</p>
<p>当然，CAD有时也需要效果迷人的成品图，但这一般都是使用高级离线渲染，多花点时间，做成远胜实时渲染的效果。软件离线渲染器似乎可以算是另一个领域。对于工业3D而言，一般会选用一个现成的离线渲染器，而不是自己花时间写一个。</p>
<p>不过，随着GPU通用计算的兴起，也为CAD领域带来了一些新的可能性。大量的计算，尤其是曲面三角化等，有可能交由GPU来处理。不过，这应该不会导致架构上的变化，而只是一些底层API实现上的优化，因为OpenGL本来就是一个良好的工业3D的绘图抽象层。</p>
<p>但这和游戏领域的需求是矛盾的。OpenGL ARB在争论中曾经提出分成两个profile，一个CAD profile，一个game profile。但这个提议被否决了，因为人们不希望出现两个OpenGL。争论在持续了若干年后终于有了进展，新的方案是一个面向新硬件加速架构的core profile和兼容旧程序的compatibility profile。但这对CAD领域来说仍然是很不理想的，因为这意味着compatibility profile的支持会越来越少，他们早晚得重写渲染代码。至于CAD厂商为什么会接受这个提案，从Autodesk公开的的一篇report里能看出一点，他们颇受参差不齐的OpenGL驱动质量之苦。OpenGL是在硬件加速时代之前的产物，功能繁杂，并不是所有功能组合都可以加速，以致很多驱动实现不但bug多多，而且行为不一。这导致测试、补救的代价非常之高，以致3DSMAX 7之后缺省使用D3D做加速后端。如此，则一个新的精简的OpenGL core profile是一个合理的选择。</p>
<p>但是，并不是所有的CAD软件都像3DSMAX这样可以切换渲染后端，有一个渲染抽象层。而且，core profile的API非常的贴近硬件，并不适合直接用来做高层渲染逻辑。总体来说，传统的OpenGL API本身就是一个面向CAD的良好的抽象层，很多年内它仍然会是，构架在OpenGL之上的CAD程序并不十分需要一个新的抽象层。所以OpenGL compatibility profile其实就是用core profile API实现的传统OpenGL API，就是这个抽象层的一个标准实现。如果显卡不提供compatibility profile了，CAD厂商仍然可以自己提供这个实现，又不用重写以前的代码，又可以利用未来新硬件的加速功能。而且，鉴于3D硬件的发展速度，D3D没几年就更新一代，每代之间完全不兼容，贴近硬件的OpenGL core profile也有这种风险。compatibility profile则为CAD软件提供了一层安全垫，只要更换不同的实现就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2010/12/16/cad3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

