计算机图形学(一)

设备参数:
1.图形控制设备:

最大支持的分辨率为:2560×1600。

Nvidia GeForce GTX860M显卡参数:

所属品牌:NVIDIA;

芯片型号:GeForce GTX 860M;

显存容量:2048M;

显存类型:GDDR 5;

显存频率:2500MHz;

流处理器:1152个;

制作工艺:28纳米;

核心位宽:128bit。

2.显示设备:1920x1080
3.开发环境 CodeBlocks + glut

一.基本认识

1.头文件

#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>//GLUT处理窗口

2.main
main函数的参数

  前面介绍的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:
main (argc,argv)
int argv;
char *argv[];或写成:
main (int argc,char *argv[])
  由于main函数不能被其它函数调用, 因此不可能在程序内部取得实际值。那么,在何处把实参值赋予main函数的形参呢? 实际上,main函数的参数值是从操作系统命令行上获得的。当我们要运行一个可执行文件时,在DOS提示符下键入文件名,再输入实际参数即可把这些实参传送到main的形参中去。

  DOS提示符下命令行的一般形式为: C:>可执行文件名 参数 参数……; 但是应该特别注意的是,main 的两个形参和命令行中的参数在
位置上不是一一对应的。因为,main的形参只有二个,而命令行中的参数个数原则上未加限制。argc参数表示了命令行中参数的个数(注意:文件名本身也算一个参数),argc的值是在输入命令行时由系统按实际参数的个数自动赋予的。例如有命令行为: C:>E6 24 BASIC dbase FORTRAN由于文件名E6 24本身也算一个参数,所以共有4个参数,因此argc取得的值为4。argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。 指针数组的长度即为参数个数。数组元素初值由系统自动赋予。

3.一个完整的程序

#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>//GLUT处理窗口
#include <cstdio>
//第一个程序我们要显示简单的二维线段(采用onengl三维观察)
void init (void){
    glClearColor(1.0, 1.0, 1.0, 0.0);//设置显示窗口背景颜色(白色)
    glMatrixMode(GL_PROJECTION);//使用正投影将世界坐标系二维区域映射到屏幕上
    gluOrtho2D(0.0,200.0,0.0,150.0);//区域的x坐标从0.0到200.0,y坐标从0.0到150.0任何该坐标范围外的内容都不会显示出来
}

void lineSegment(void){
    glClear(GL_COLOR_BUFFER_BIT);//清空显示窗口,使之前赋值的窗口得到显示,GL_COLOR_BUFFER_BIT常量用来指定它是颜色缓存(刷新缓存)中的位值,该缓存将使用glClearColor中设置的值来设定。

    glColor3f(0.0, 0.4 ,0.2);//3f表示使用RGB分量时采用浮点数,设置线段颜色
    glBegin( GL_LINES );
        glVertex2i(180,15);//2i,两个整型分量
        glVertex2i(10,145);
    glEnd();//定义了一个从整数笛卡尔端点坐标(180,15)到(10,145)的二维直线段

    glFlush();//强制执行清空缓存
}

int main(int argc, char* argv[]){
    glutInit(&argc, argv);//GLUT初始化
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//指定显示窗口缓存和颜色模型等选项(使用单个缓存|使用RGB颜色模型)
    glutInitWindowPosition(50,100);//指定显示窗口的位置,显示窗口左上角在屏幕左边界向右50像素,屏幕上边界向下100像素位置上
    glutInitWindowSize(400,300);//指定一个宽400像素,高300像素的显示窗口
    glutCreateWindow("sadasdasa1");//给定一个标题
    init();//执行初始化过程

    glutDisplayFunc(lineSegment);//将(lineSegment)图赋给显示窗口
    glutMainLoop();//激活,循环显示图形直到显示窗口关闭,必须是程序中最后一个
}

4.出错检查

GLenum errorCheck (){
    GLenum code;
    const GLubyte * string;
    code = glGetError();
    if (code != GL_NO_ERROR){
        string = gluErrorString (code);
        fprintf(stderr, "OpenGL error: %s\n", string);
    }

    return code;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值