⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tutorial_47.htm

📁 如果你相信它就好好学学吧,同样这里也只是个入门
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><!-- 这篇文章由Dancingwind翻译,作者的联系方式zhouwei02@mails.tsinghua.edu.cn --><title>NeHe OpenGL教程第四十七课,DancingWind翻译</title>


<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
A:active {
	BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #bbccff; TEXT-DECORATION: none
}
A:link {
	BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #bbccff; TEXT-DECORATION: none
}
A:visited {
	BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #bbccff; TEXT-DECORATION: none
}
A:hover {
	BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ffda6a; TEXT-DECORATION: none
}
BODY {
	COLOR: #ffffff; BACKGROUND-COLOR: #000000
}
TD IMG {
	DISPLAY: block
}
.back {
	BACKGROUND: #000022; COLOR: #ffffff
}
.back2 {
	BACKGROUND: #000000; COLOR: #ffffff
}
.back3 {
	BACKGROUND: #000022; COLOR: #ffffff
}
.copy {
	FONT-SIZE: 11px; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Tahoma, Verdana, sans-serif; FONT-VARIANT: normal; TEXT-DECORATION: none
}
.head {
	FONT: bold 13px Tahoma, Verdana, sans-serif; TEXT-DECORATION: none
}
.link {
	FONT-SIZE: 14px; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Tahoma, Verdana, sans-serif; FONT-VARIANT: normal; TEXT-DECORATION: none
}
.menu {
	FONT: bold 17px Tahoma, Verdana, sans-serif; TEXT-DECORATION: none
}
.news {
	BACKGROUND: #00008b; COLOR: #ffffff
}
.tab {
	PADDING-LEFT: 35px
}
.text {
	FONT-SIZE: 12px; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Tahoma, Verdana, sans-serif; FONT-VARIANT: normal; TEXT-DECORATION: none
}
.theme {
	BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #bbccff
}
.dotted {
	BORDER-RIGHT: #00008b 2px dotted; BORDER-TOP: #00008b 2px dotted; BORDER-LEFT: #00008b 2px dotted; BORDER-BOTTOM: #00008b 2px dotted
}
.solid {
	BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid; BORDER-LEFT: #ffffff 1px solid; BORDER-BOTTOM: #ffffff 1px solid
}
.logo {
	BACKGROUND-IMAGE: url(../graphics/rgb/logo.jpg)
}
.menubar {
	BACKGROUND-IMAGE: url(../graphics/rgb/menubar.jpg)
}
.menubg {
	BACKGROUND-IMAGE: url(../graphics/rgb/menubg.jpg)
}
.menuheading {
	BACKGROUND-IMAGE: url(../graphics/rgb/menuheading.jpg)
}
.nehebutton {
	BACKGROUND-IMAGE: url(../graphics/rgb/nehebutton.jpg)
}
.newslogo {
	BACKGROUND-IMAGE: url(../graphics/rgb/newslogo.jpg)
}
.tinylogo {
	BACKGROUND-IMAGE: url(../graphics/rgb/border/tinylogo.jpg)
}
.bc {
	BACKGROUND-IMAGE:  url(../Pic/bc.png)
}
.bl {
	BACKGROUND-IMAGE:  url(../Pic/bl.png)
}
.br {
	BACKGROUND-IMAGE:  url(../Pic/br.png)
}
.c {
	BACKGROUND-IMAGE: url(../Picc.png)
}
.l {
	BACKGROUND-IMAGE:  url(../Pic/l.png)
}
.lc {
	BACKGROUND-IMAGE: url(../Piclc.png)
}
.r {
	BACKGROUND-IMAGE:  url(../Pic/r.png)
}
.rc {
	BACKGROUND-IMAGE: url(../Picrc.png)
}
.tc {
	BACKGROUND-IMAGE:  url(../Pic/tc.png)
}
.tl {
	BACKGROUND-IMAGE:  url(../Pic/tl.png)
}
.tr {
	BACKGROUND-IMAGE:  url(../Pic/tr.png)
}

</style></head><body bgcolor="black" link="#aaccff" text="white" vlink="#aaccff">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
  <tr>
    <td class="tinylogo" height="130" width="326"><img alt="NeHe Productions" src="Tutorial_47_files/logo.png" height="130" width="326"></td>
      <td align="center" valign="center"><div align="center"><font class="text"><font class="theme" size="+3"><b><i>第47课</i></b></font></font></div></td>
  </tr></tbody></table>
  <!-- 上边框-->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
    <td><img src="Tutorial_47_files/tl.jpg" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_47_files/tc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_47_files/tr.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>

<!-- 中部-->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
  	<!-- 中部左边框-->
    <td background="Tutorial_47_files/l.gif"><img src="Tutorial_47_files/l.gif" height="28" width="28"></td>
	<!-- 中部文字部分-->
    <td valign="top" width="100%">
	<table border="0" width="100%">
          <tbody><tr>
            <td width="20%"><img src="Tutorial_47_files/lesson47.jpg" height="120" width="160"></td>
            <td width="80%"><p><font><b>CG 顶点脚本</b></font></p>
              <p><font size="3">nVidio的面向GPU的C语言,如果你相信它就好好学学吧,同样这里也只是个入门。记住,类似的语言还有微软的HLSL,OpenGL的GLSL,ATI的shaderMonker。不要选错哦:)</font></p></td>
          </tr>
     </tbody></table>
      </td>
	<!-- 中部右边框-->
    <td background="Tutorial_47_files/r.gif"><img src="Tutorial_47_files/r.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>

<!-- 下边框-->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
    <td><img src="Tutorial_47_files/bl.gif" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_47_files/bc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_47_files/br.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
  <tr>
    <td class="tl"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
    <td class="tc" width="100%"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="100%"></td>
    <td class="tr"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
  <tr>
    <td class="l"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
      <td class="back3" valign="top" width="100%">使用顶点和片断脚本去做渲染工作可以得到额外的好处,最大的好处就是把CPU的一些工作交给了GPU,Cg提供了书写这些强大的脚本的一种手段。
        <p>这篇教程有许多目的,第一向你展现了一个非常简单的顶点脚本,第二向你说明如何在OpenGL中使用Cg编写的脚本。</p>
        <p>这个教程是基于最新的NeHeGL的基本代码,为了获得更多的信息,你可以访问nVidia的官方网站(developer.nvidia.com),它会给你一个完整的答案。</p>
        <p>注意:这个教程不是叫你如何去写一个完整的Cg脚本,而是教你在OpenGL中载入并运行脚本。</p>
        <p>开始:<br>
          第一步,从nVidia的网站上下载Cg Compiler库,最好去下载1.1版本的,因为nvidia各个版本的变化很大,为了让程序不出现任何问题,最好这样做,因为我们用的是1.1版本的。</p>
        <p>下一步,包含编译需要的头文件和库文件。</p>
        <p>&nbsp;</p>
    </td>
    <td class="r"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
  <tr>
    <td class="bl"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
    <td class="bc" width="100%"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
    <td class="br"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
  <tr>
    <td class="tl"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
    <td class="tc" width="100%"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="100%"></td>
    <td class="tr"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
  <tr>
    <td class="l"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
    <td class="back3" valign="top" width="100%"><p>我已经帮你把它们拷贝到了工程的文件夹里了。</p>
        <p>Cg介绍<br>
          你必须有以下几个概念:<br>
          1、顶点脚本会作用于你输入的每一个顶点,如果你想要作用于一些顶点,那么你必须在作用前加载顶点脚本,并于作用后释放顶点脚本。<br>
          2、顶点脚本输出的结果被送入到片断处理器中,你不用管这其中是如何实现的。<br>
          最后,记住顶点脚本在图元装配前被执行,片断脚本在光栅化后被执行。</p>
        <p>好了,现在我们创建一个空白的文件吧(保存为wave.cg),接着我们创建一个数据结构,它被我们得脚本使用。下面的代码被加入到wave.cg文件中。</p></td>
    <td class="r"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
  <tr>
    <td class="bl"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
    <td class="bc" width="100%"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
    <td class="br"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<pre>struct appdata <br>{<br>	float4 position : POSITION;<br>	float4 color	: COLOR0;<br>	float3 wave	: COLOR1;<br>};</pre>
<p></p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
  <tr>
    <td class="tl"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
    <td class="tc" width="100%"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="100%"></td>
    <td class="tr"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
  <tr>
    <td class="l"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
      <td class="back3" valign="top" width="100%">上面的结果说明,我们输入的顶点包含一个位置坐标,一个颜色和我们自定义的波的颜色 
        <p>下面的代码定义一个输出顶点的数据,包括一个顶点和颜色</p>
    </td>
    <td class="r"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
  <tr>
    <td class="bl"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
    <td class="bc" width="100%"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td>
    <td class="br"><img alt="" src="Tutorial_47_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<pre>struct vfconn<br>{<br>	float4 HPos	: POSITION;<br>	float4 Col0	: COLOR0;<br>};<br></pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -