VS2017 配置 CG/OpenGL环境
1.安装VS2017-勾选C++
https:
2.安装Cg Toolkit
http:
安装后,就会生成三个环境变量,CG_BIN_PATH,CG_INC_PATH,CG_LIB_PATH
3.打开需要配置CG的项目(新建一个也行)
例如新建一个项目,参考文章https://blog.csdn.net/zhangci226/article/details/5540153
#include <gl/glut.h>
#include <cg/cg.h>
#include <Cg/cgGL.h>
#include <stdio.h>
int ww = 640, hh = 480;
void render();
void reshape(int w, int h);
static CGcontext myCgContext;
static CGprofile myCgVertexProfile;
static CGprofile myCgFragmentProfile;
static CGprogram myCgVertexProgram;
static CGprogram myCgFragmentProgram;
static const char *myProgramName = "Hello CG";
static const char *myVertexProgramFileName = "01vs.cg";
static const char *myVertexProgramName = "vs_main";
static const char *myFragmentProgramFileName = "01fs.cg";
static const char *myFragmentProgramName = "fs_main";
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(ww, hh);
glutCreateWindow(myProgramName);
glutDisplayFunc(render);
glutReshapeFunc(reshape);
glEnable(GL_DEPTH_TEST);
myCgContext = cgCreateContext();
cgGLSetDebugMode(CG_FALSE);
cgSetParameterSettingMode(myCgContext, CG_DEFERRED_PARAMETER_SETTING);
myCgVertexProfile = cgGLGetLatestProfile(CG_GL_VERTEX);
cgGLSetOptimalOptions(myCgVertexProfile);
myCgVertexProgram =
cgCreateProgramFromFile(
myCgContext,
CG_SOURCE,
myVertexProgramFileName,
myCgVertexProfile,
myVertexProgramName,
NULL);
cgGLLoadProgram(myCgVertexProgram);
myCgFragmentProfile = cgGLGetLatestProfile(CG_GL_FRAGMENT);
cgGLSetOptimalOptions(myCgFragmentProfile);
myCgFragmentProgram =
cgCreateProgramFromFile(
myCgContext,
CG_SOURCE,
myFragmentProgramFileName,
myCgFragmentProfile,
myFragmentProgramName,
NULL);
cgGLLoadProgram(myCgFragmentProgram);
glutMainLoop();
return 0;
}
void reshape(int w, int h) {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, (float)w / (float)h, 0.1, 100);
glViewport(0, 0, w, h);
ww = w;
hh = h;
}
void render() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(.0f, .0f, .2f, 1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(.0, .0, 5.0, .0, .0, .0, .0, 1.0, .0);
static float angle;
glRotatef(angle, 0.0, 1.0, 0.0);
cgGLBindProgram(myCgVertexProgram);
cgGLEnableProfile(myCgVertexProfile);
cgGLBindProgram(myCgFragmentProgram);
cgGLEnableProfile(myCgFragmentProfile);
CGparameter mvp = cgGetNamedParameter(myCgVertexProgram, "MVP");
cgGLSetStateMatrixParameter(mvp, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY);
glutSolidTorus(0.3, 1.0, 30, 30);
cgGLDisableProfile(myCgVertexProfile);
cgGLDisableProfile(myCgFragmentProfile);
angle += 0.5;
if (angle >= 360) angle = 0.0f;
glutSwapBuffers();
glutPostRedisplay();
}
还有两个.cg文件:
01fs.cg
float4 fs_main(float4 color: COLOR): COLOR
{
return color;
}
01vs.cg
struct output
{
float4 position: POSITION;
float4 color: COLOR;
};
output vs_main(float4 position: POSITION,float4 color: COLOR,uniform float4x4 MVP){
output OUT;
OUT.position = mul(MVP, position);
OUT.color = position;
return OUT;
}
4.配置VS2017+CG环境


5.点击本地Windows调试器(运行cg)


6.不推荐方案-VS2017-Nuget包-nupengl插件

7.引用文章:
https://blog.csdn.net/zhangci226/article/details/5540153
8.项目地址:
HelloCG