博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第二章 如何在VS2008里面编译CG
阅读量:4040 次
发布时间:2019-05-24

本文共 3498 字,大约阅读时间需要 11 分钟。

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

第二步:点击“添加”

添加如图所示的二个工具

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

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

转载地址:http://soxdi.baihongyu.com/

你可能感兴趣的文章
Selenium之前世今生
查看>>
Selenium-WebDriverApi接口详解
查看>>
Selenium-ActionChains Api接口详解
查看>>
Selenium-Switch与SelectApi接口详解
查看>>
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
测试必会之 Linux 三剑客之 sed
查看>>
Socket请求XML客户端程序
查看>>
Java中数字转大写货币(支持到千亿)
查看>>
Java.nio
查看>>
函数模版类模版和偏特化泛化的总结
查看>>
VMware Workstation Pro虚拟机不可用解决方法
查看>>
最简单的使用redis自带程序实现c程序远程访问redis服务
查看>>
redis学习总结-- 内部数据 字符串 链表 字典 跳跃表
查看>>
iOS 对象序列化与反序列化
查看>>
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>