第二章 如何在VS2008里面编译CG

第一步:打开“工具”-“外部工具”


第二步:点击“添加”

添加如图所示的二个工具


其中 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

各种不认识哦,好了今天就到这里。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值