第二章 如何在VS2008里面编译CG
2013-02-23 21:01
302 查看
第一步:打开“工具”-“外部工具”
第二步:点击“添加”
添加如图所示的二个工具
其中 CG Vertex Compile的各个参数为:
标题:CG Vertex Complie
命令:D:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64\cgc.exe
参数:$(ItemPath) -profile vp40 -entry MyVertexEntry -o MyVertex.asm
初始目录:$(ItemDir)
CG Fragment Compile的各个参数为:
标题:CG Fragment Complie
命令:D:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64\cgc.exe
参数:$(ItemPath) -profile fp40 -entry MyFragmentEntry -o MyFragment.asm
初始目录:$(ItemDir)
解释下:
命令里填的就是cgc这个程序的路径,如何不知道cgc在哪里,去第一章提供的网址下下来Cg Toolkit 3.1的里面。
安装过后我的在D:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64里面。注意.x64表示64位系统用的,我用的64位的WIN7
参数需要解释下$(ItemPath) -profile vp40 -entry MyVertexEntry -o MyVertex.asm
$(ItemPath)表示需要编译哪个文件 $(ItemPath)这个宏代替了当前编译对象(也就是你VS里面打开的哪个文件)的绝对路径(包含目录和文件名以及扩展名)
我的解决方案如图所示:
我的这个解决方案中$(ItemPath)在我的电脑里面代替了
E:\My Tutorial\《The Cg Turorial》\chap3\chap3_exercise4_quadruple_version_texture\chap3_exercise4_quadruple_version_texture\MyVertex.cg
-profile vp40 用什么格式来编译
-entry MyVertexEntry 入口函数
-o MyFragment.asm 输出的文件名
我的MyVertex.cg文件如下:
void MyVertexEntry(
float2 position:POSITION,
float2 texCoord:TEXCOORD0,
out float4 oPosition:POSITION,
out float2 leftTexCoord:TEXCOORD0,
out float2 rightTexCoord:TEXCOORD1,
out float2 upTexCoord:TEXCOORD2,
out float2 downTexCoord:TEXCOORD3,
uniform float2 leftSeparation,
uniform float2 rightSeparation,
uniform float2 upSeparation,
uniform float2 downSeparation)
{
oPosition=float4(position,0,1);
leftTexCoord=texCoord+leftSeparation;
rightTexCoord=texCoord+rightSeparation;
upTexCoord=texCoord+upSeparation;
downTexCoord=texCoord+downSeparation;
}
初始目录:$(ItemDir)也解释下
他表示相对文件名接在这之后,后面你会看到它的用处
MyFragment以此类推
第三步:在VS的工作区里面切换到MyVertex.cg文件(这样ItemPath才指向它)
选择“工具”-“CG Vertex Compile”
最后在vs的窗口里面显示
e:\My Tutorial\《The Cg Turorial》\chap3\chap3_exercise4_quadruple_version_texture\chap3_exercise4_quadruple_version_texture\MyVertex.cg
19 lines, 0 errors.
MyFragment.cg编译以此类推
最终将后在当前编译目录下生成(因为我们的初始目录:$(ItemDir)代表了当前编译对象所在的目录)
MyVertex.asm 和 MyFragment.asm 两个文件
其中MyVertex.asm文件内容如下:
!!ARBvp1.0
OPTION NV_vertex_program3;
# cgc version 3.1.0013, build date Apr 18 2012
# command line args: -profile vp40
# source file: e:\My Tutorial\《The Cg Turorial》\chap3\chap3_exercise4_quadruple_version_texture\chap3_exercise4_quadruple_version_texture\MyVertex.cg
#vendor NVIDIA Corporation
#version 3.1.0.13
#profile vp40
#program MyVertexEntry
#semantic MyVertexEntry.leftSeparation
#semantic MyVertexEntry.rightSeparation
#semantic MyVertexEntry.upSeparation
#semantic MyVertexEntry.downSeparation
#var float2 position : $vin.POSITION : POSITION : 0 : 1
#var float2 texCoord : $vin.TEXCOORD0 : TEXCOORD0 : 1 : 1
#var float4 oPosition : $vout.POSITION : HPOS : 2 : 1
#var float2 leftTexCoord : $vout.TEXCOORD0 : TEX0 : 3 : 1
#var float2 rightTexCoord : $vout.TEXCOORD1 : TEX1 : 4 : 1
#var float2 upTexCoord : $vout.TEXCOORD2 : TEX2 : 5 : 1
#var float2 downTexCoord : $vout.TEXCOORD3 : TEX3 : 6 : 1
#var float2 leftSeparation : : c[0] : 7 : 1
#var float2 rightSeparation : : c[1] : 8 : 1
#var float2 upSeparation : : c[2] : 9 : 1
#var float2 downSeparation : : c[3] : 10 : 1
#const c[4] = 0 1
PARAM c[5] = { program.local[0..3],
{ 0, 1 } };
TEMP RC, HC;
BB0:
MOV result.position.xy, vertex.position;
MOV result.position.zw, c[4].xyxy;
ADD result.texcoord[0].xy, c[0], vertex.texcoord[0];
ADD result.texcoord[1].xy, c[1], vertex.texcoord[0];
ADD result.texcoord[2].xy, c[2], vertex.texcoord[0];
ADD result.texcoord[3].xy, c[3], vertex.texcoord[0];
END
# 6 instructions, 0 R-regs
各种不认识哦,好了今天就到这里。
第二步:点击“添加”
添加如图所示的二个工具
其中 CG Vertex Compile的各个参数为:
标题:CG Vertex Complie
命令:D:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64\cgc.exe
参数:$(ItemPath) -profile vp40 -entry MyVertexEntry -o MyVertex.asm
初始目录:$(ItemDir)
CG Fragment Compile的各个参数为:
标题:CG Fragment Complie
命令:D:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64\cgc.exe
参数:$(ItemPath) -profile fp40 -entry MyFragmentEntry -o MyFragment.asm
初始目录:$(ItemDir)
解释下:
命令里填的就是cgc这个程序的路径,如何不知道cgc在哪里,去第一章提供的网址下下来Cg Toolkit 3.1的里面。
安装过后我的在D:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64里面。注意.x64表示64位系统用的,我用的64位的WIN7
参数需要解释下$(ItemPath) -profile vp40 -entry MyVertexEntry -o MyVertex.asm
$(ItemPath)表示需要编译哪个文件 $(ItemPath)这个宏代替了当前编译对象(也就是你VS里面打开的哪个文件)的绝对路径(包含目录和文件名以及扩展名)
我的解决方案如图所示:
我的这个解决方案中$(ItemPath)在我的电脑里面代替了
E:\My Tutorial\《The Cg Turorial》\chap3\chap3_exercise4_quadruple_version_texture\chap3_exercise4_quadruple_version_texture\MyVertex.cg
-profile vp40 用什么格式来编译
-entry MyVertexEntry 入口函数
-o MyFragment.asm 输出的文件名
我的MyVertex.cg文件如下:
void MyVertexEntry(
float2 position:POSITION,
float2 texCoord:TEXCOORD0,
out float4 oPosition:POSITION,
out float2 leftTexCoord:TEXCOORD0,
out float2 rightTexCoord:TEXCOORD1,
out float2 upTexCoord:TEXCOORD2,
out float2 downTexCoord:TEXCOORD3,
uniform float2 leftSeparation,
uniform float2 rightSeparation,
uniform float2 upSeparation,
uniform float2 downSeparation)
{
oPosition=float4(position,0,1);
leftTexCoord=texCoord+leftSeparation;
rightTexCoord=texCoord+rightSeparation;
upTexCoord=texCoord+upSeparation;
downTexCoord=texCoord+downSeparation;
}
初始目录:$(ItemDir)也解释下
他表示相对文件名接在这之后,后面你会看到它的用处
MyFragment以此类推
第三步:在VS的工作区里面切换到MyVertex.cg文件(这样ItemPath才指向它)
选择“工具”-“CG Vertex Compile”
最后在vs的窗口里面显示
e:\My Tutorial\《The Cg Turorial》\chap3\chap3_exercise4_quadruple_version_texture\chap3_exercise4_quadruple_version_texture\MyVertex.cg
19 lines, 0 errors.
MyFragment.cg编译以此类推
最终将后在当前编译目录下生成(因为我们的初始目录:$(ItemDir)代表了当前编译对象所在的目录)
MyVertex.asm 和 MyFragment.asm 两个文件
其中MyVertex.asm文件内容如下:
!!ARBvp1.0
OPTION NV_vertex_program3;
# cgc version 3.1.0013, build date Apr 18 2012
# command line args: -profile vp40
# source file: e:\My Tutorial\《The Cg Turorial》\chap3\chap3_exercise4_quadruple_version_texture\chap3_exercise4_quadruple_version_texture\MyVertex.cg
#vendor NVIDIA Corporation
#version 3.1.0.13
#profile vp40
#program MyVertexEntry
#semantic MyVertexEntry.leftSeparation
#semantic MyVertexEntry.rightSeparation
#semantic MyVertexEntry.upSeparation
#semantic MyVertexEntry.downSeparation
#var float2 position : $vin.POSITION : POSITION : 0 : 1
#var float2 texCoord : $vin.TEXCOORD0 : TEXCOORD0 : 1 : 1
#var float4 oPosition : $vout.POSITION : HPOS : 2 : 1
#var float2 leftTexCoord : $vout.TEXCOORD0 : TEX0 : 3 : 1
#var float2 rightTexCoord : $vout.TEXCOORD1 : TEX1 : 4 : 1
#var float2 upTexCoord : $vout.TEXCOORD2 : TEX2 : 5 : 1
#var float2 downTexCoord : $vout.TEXCOORD3 : TEX3 : 6 : 1
#var float2 leftSeparation : : c[0] : 7 : 1
#var float2 rightSeparation : : c[1] : 8 : 1
#var float2 upSeparation : : c[2] : 9 : 1
#var float2 downSeparation : : c[3] : 10 : 1
#const c[4] = 0 1
PARAM c[5] = { program.local[0..3],
{ 0, 1 } };
TEMP RC, HC;
BB0:
MOV result.position.xy, vertex.position;
MOV result.position.zw, c[4].xyxy;
ADD result.texcoord[0].xy, c[0], vertex.texcoord[0];
ADD result.texcoord[1].xy, c[1], vertex.texcoord[0];
ADD result.texcoord[2].xy, c[2], vertex.texcoord[0];
ADD result.texcoord[3].xy, c[3], vertex.texcoord[0];
END
# 6 instructions, 0 R-regs
各种不认识哦,好了今天就到这里。
相关文章推荐
- (转)如何在VS2008中编译64位程序
- Scott 教我们如何在VS2008里面使用 Jquery
- 如何利用VS2008编译调试C语言程序
- 【引用】Cg profiles,如何使用CGC编译Cg语言
- 如何编译OpenCV里面的ocl模块
- 在VS2008(VC9)中如何正确编译Ogre源码
- VC编译选项里面如何增加 win32 unicode release项
- 如何编译android 4.1 的源码并在android的ADT里面调试framework相关的代码
- VS2008如何编译出一个64位的程序
- 如何编译OpenCV里面的ocl模块
- 如何在VS2008里面调试DLL?
- cg profiles,什么是profiles,以及如何使用CGC编译Cg语言
- 如何在RedHat里面编译R源码并安装
- 如何在visual Studio 2015里面查看unity3d 源码(ReSharper插件反编译出来的==Reflector.exe解析dll效果类似)
- 如何在VS2008中编译64位程序
- 第一章 在VS2008下如何配置好CG环境
- cg profiles,什么是profiles,以及如何使用CGC编译Cg语言
- cg profiles,什么是profiles,以及如何使用CGC编译Cg语言
- vs2008编译的程序如何在未安装vs的电脑上运行
- 如何编译ubuntu源码包里面的源码?