第一步:去官网上下载Cg ToolKit并安装

https://developer.nvidia.com/cg-toolkit-download

写此文时,最新版本是

Cg Toolkit 3.1 - April 2012 (3.1.0013)

  • Windows 32/64-bit

    • installer for Windows XP, Vista and Win7.
  • Mac OS X ppc/i386/x86_64
    • dmg for Tiger, Leopard and Snow Leopard.
  • Linux 32-bit
    • tgz tarball
    • rpm for RedHat
    • deb for Debian and Ubuntu.
  • Linux 64-bit
    • tgz tarball
    • rpm for RedHat
    • deb for Debian and Ubuntu.

选择适合自己的操作系统,下载好了,就安装吧!

我的安装路径D:\Program Files\NVIDIA Corporation\Cg

第二步:设置路径

1.新建用户变量

变量:CG_HOME

变量值:D:\Program Files\NVIDIA Corporation\Cg

2.在path路径添加:D:\Program Files\NVIDIA Corporation\Cg\bin;

3.VS2008工具-选项-项目和解决方案-VC++目录

包含文件目录添加:$(CG_HOME)\include

库文件目录添加:$(CG_HOME)\lib

第三步:尝试在OPENGL里面使用(因为DX暂时没学。。。)

1.先打开D:\Program Files\NVIDIA Corporation\Cg\examples\OpenGL\basic\01_vertex_program文件夹。你可以看下里面的内容,这就是我们程序所需要的一些文件,这是书上的例子

2.新建-项目(我这里项目名是The_first_Cg_program),这里选择Win32控制台应用程序

3.项目-属性-配置属性-链接器-输入-附加依赖项 ,写上cg.lib cgGl.lib

4.新建源文件(我这里源文件名是main.cpp),将先前已打开的文件夹下面的01_vertex_program.c里面文件内容复制到源文件中

5.需要将cg源文件复制到项目目录下,将先前打开的文件夹下面的C2E1v_green.cg复制到你的项目文件夹(我这里是E:\《The Cg Turorial》\chap1\The_first_Cg_program\The_first_Cg_program)。

另外补充说明,其实这样就可以执行了,但是了方便的编辑Cg源文件,这里强烈推荐这样做

找到解决方案资源管理器,右键单击The_first_Cg_program项目,添加-新建筛选器,命名为Cg,右键点击Cg文件夹,添加-现有项,选择刚才拷贝过来的C2E1v_green.cg,这样以后就可以直接在vs2008里面编辑Cg源文件了

6.OK,编译执行。绿色三角形终于出来了,结果如下图:

最后,为了方便那些伸手党,我给main.cpp和C2E1v_green.cg的源码贴上

main.cpp文件

/* 01_vertex_program.c - OpenGL-based very simple vertex program exampleusing Cg program from Chapter 2 of "The Cg Tutorial" (Addison-Wesley,ISBN 0321194969). *//* Requires the OpenGL Utility Toolkit (GLUT) and Cg runtime (version1.0 or higher). */#include <stdio.h>    /* for printf and NULL */
#include <stdlib.h>   /* for exit */
#if __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
#include <Cg/cg.h>    /* Can't include this?  Is Cg Toolkit installed! */
#include <Cg/cgGL.h>static CGcontext   myCgContext;
static CGprofile   myCgVertexProfile;
static CGprogram   myCgVertexProgram;static const char *myProgramName = "01_vertex_program",*myVertexProgramFileName = "C2E1v_green.cg",
/* Page 38 */     *myVertexProgramName = "C2E1v_green";static void checkForCgError(const char *situation)
{CGerror error;const char *string = cgGetLastErrorString(&error);if (error != CG_NO_ERROR) {printf("%s: %s: %s\n",myProgramName, situation, string);if (error == CG_COMPILER_ERROR) {printf("%s\n", cgGetLastListing(myCgContext));}exit(1);}
}/* Forward declared GLUT callbacks registered by main. */
static void display(void);
static void keyboard(unsigned char c, int x, int y);int main(int argc, char **argv)
{glutInitWindowSize(400, 400);glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);glutInit(&argc, argv);glutCreateWindow(myProgramName);glutDisplayFunc(display);glutKeyboardFunc(keyboard);glClearColor(0.1, 0.3, 0.6, 0.0);  /* Blue background */myCgContext = cgCreateContext();checkForCgError("creating context");cgGLSetDebugMode(CG_FALSE);cgSetParameterSettingMode(myCgContext, CG_DEFERRED_PARAMETER_SETTING);myCgVertexProfile = cgGLGetLatestProfile(CG_GL_VERTEX);cgGLSetOptimalOptions(myCgVertexProfile);checkForCgError("selecting vertex profile");myCgVertexProgram =cgCreateProgramFromFile(myCgContext,              /* Cg runtime context */CG_SOURCE,                /* Program in human-readable form */myVertexProgramFileName,  /* Name of file containing program */myCgVertexProfile,        /* Profile: OpenGL ARB vertex program */myVertexProgramName,      /* Entry function name */NULL);                    /* No extra compiler options */checkForCgError("creating vertex program from file");cgGLLoadProgram(myCgVertexProgram);checkForCgError("loading vertex program");glutMainLoop();return 0;
}static void display(void)
{glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);cgGLBindProgram(myCgVertexProgram);checkForCgError("binding vertex program");cgGLEnableProfile(myCgVertexProfile);checkForCgError("enabling vertex profile");/* Rendering code verbatim from Chapter 1, Section 2.4.1 "Renderinga Triangle with OpenGL" (page 57). */glBegin(GL_TRIANGLES);glVertex2f(-0.8, 0.8);glVertex2f(0.8, 0.8);glVertex2f(0.0, -0.8);glEnd();cgGLDisableProfile(myCgVertexProfile);checkForCgError("disabling vertex profile");glutSwapBuffers();
}static void keyboard(unsigned char c, int x, int y)
{switch (c) {case 27:  /* Esc key *//* Demonstrate proper deallocation of Cg runtime data structures.Not strictly necessary if we are simply going to exit. */cgDestroyProgram(myCgVertexProgram);cgDestroyContext(myCgContext);exit(0);break;}
}

C2E1v_green.cg源码,注意这里只用了顶点着色器

// This is C2E1v_green from "The Cg Tutorial" (Addison-Wesley, ISBN
// 0321194969) by Randima Fernando and Mark J. Kilgard.  See page 38.struct C2E1v_Output {float4 position : POSITION;float3 color    : COLOR;
};C2E1v_Output C2E1v_green(float2 position : POSITION)
{   C2E1v_Output OUT;OUT.position = float4(position,0,1);OUT.color = float3(0,1,0);return OUT;
}

第一章 在VS2008下如何配置好CG环境相关推荐

  1. python开发工具及环境配置_python_在windows下安装配置python开发环境及Ulipad开发工具...

    最近开始学习Python,在网上寻找一下比较好的IDE.因为以前用C#做开发的,用Visual Studio作为IDE,鉴于用惯了VS这么强大的IDE,所以对IDE有一定的依赖性. Python的ID ...

  2. IME输入法编程:第一章 Windows9x系统下汉字输入法的基本原理

    IME输入法编程 第一章 Windows9x系统下汉字输入法的基本原理 Windows系统下汉字输入法实际上是将输入的标准ascii字符串按照一定的编码规则转换为汉字或汉字串,进 入到目的地. 由于应 ...

  3. linux login 安装桌面,Linux_Ubuntu Linux下安装配置fluxbox桌面环境,安装   基本系统Ubuntu 7.10 G - phpStudy...

    Ubuntu Linux下安装配置fluxbox桌面环境 安装 基本系统Ubuntu 7.10 Gutsy,Xfce桌面.直接安装源里的fluxbox: aptitude install fluxbo ...

  4. 【网络通信】【GNS3】Window10 下 GNS3 配置 IOU 模拟环境

    记录 Windows10 下 GNS3 配置 IOU 模拟环境的过程. 文章目录 1. 介绍 IOU 模拟环境 2. 安装 IOU 模拟环境 2.1 安装 GNS3 2.2 安装 VMware Wor ...

  5. linux下怎么配置gnome桌面环境,Linux下怎么配置Gnome桌面环境

    和Windows一样,在Gnome的文件管理器(nautilus)里,双击一个文件的时候,系统会自动调用相应的程序去打开这个文件.下面学习啦小编教大家在 Linux下怎么配置Gnome桌面环境,下面大 ...

  6. windows下delf配置:delf环境(二)

    windows下delf配置:基础环境(一) windows下delf配置:delf环境(二) 一.delf基础package 1.1.安装tf-Slim cd c:\dlenv git clone ...

  7. vpb在VS2008下的配置编译

    先介绍一下vpb: VirtualPlanetBuilder是一种地形数据库创造工具,是能够阅读各种地理图像和高程数据并建立小面积地形数据库,乃至大规模如整个地球的庞大数据库.这些数据库可以上传到互联 ...

  8. Mac 下安装配置 Python 开发环境

    图片来源:Unsplash,作者 Markus Spiske 2019 年第 77 篇文章,总第 101 篇文章 前言 记录下 Mac 电脑的开发环境安装配置,主要包括: 安装&使用Homeb ...

  9. python ubuntu18.04 sublime_Ubuntu下Sublime配置python编译环境及新手使用指导:

    Sublime下配置python编译环境及搭建虚拟环境:(windows下大致相同) 1.编译环境配置 2019-3-6更新教程,发现好像 官方网址打不开了,要改一下源才行. 解决办法: 点击 Pre ...

最新文章

  1. 局域网瘫痪 傀儡主机的DDoS***
  2. echarts python源码_基于Echarts的微代码开发平台SmartChart, 免费开源使用
  3. 四十八、减少磁盘延迟时间的方法
  4. TreeMap源码分析
  5. 值得研究的 开源图形引擎
  6. java 集合接口原理_图文剖析java集合框架—Set接口
  7. 没什么是一次排序解决不了的,如果有,那就One more time
  8. 云服务器如何实现装虚拟机_如何在服务器上安装虚拟机呢?服务器虚拟机安装教程...
  9. win32开发(按键消息)
  10. 最好用的JQuery插件集合以及组合拳
  11. CheckBox的触发
  12. php vld解密zend,基于PHP7维护vld扩展的总结
  13. 开源网络蜘蛛(Spider)一览
  14. vue+draggable +jsPlumb 表格数据连线
  15. centOS最全下载地址
  16. poi实现word文档转pdf格式
  17. welcome.php,welcome.php
  18. 四季靓汤—土茯苓乌龟汤
  19. mysql中起飞到达城市查询_SQL航空网的几个航班查询题:
  20. 2015 Xcode7 真机调试(开发者)以及P12配置

热门文章

  1. 清理Visual Studio最近打开的项目、文件、查找内容和最近引用组件
  2. Failed to create AppDomain 'xxx'. Exception has been Failed to create AppDomain
  3. linux查找启动程序的路径
  4. Linux安装php运行环境
  5. SHELL中的变量和参数
  6. 调用百度API实现人像动漫化(C++)
  7. 计算机应用设计的目的意义,高等教育自学考试计算机及应用专业+本科毕业设计(论文)的目的与要求...
  8. 点在多边形内 java_判断点在多边形内部的方法(Java版)
  9. python通信原理_python入门第三十三天--网络通信原理(补充)
  10. 确保河道环境_扮靓美丽河湖 | 河道保洁“神器”, 上线!