OpenGL学习笔记(序)
扯淡的项目,没有办法,喝了老师的酒,只好硬着头皮上。
因为之前一直在搞java,突然跳到C++,我还真的不行,再加上又是需要用到MFC,VC,这些东西我想光会就至少的半年,怎么办呢?硬着头皮上!
不过说实在的,学了一点C++,倒是对Java以前很多不是很明白的地方有点领悟的感觉;),比如一直没有明白Java里:调用构造函数分配空间的时候,秘密传一个This给构造函数。这句话什么意思?看了C++后明白了,原来This是作为一个空白空间的地址传过去的啦!每个对象都要有唯一的标致符,是什么?当然是对象的地址啦!,废话少讲,开始OpenGL序言。
先我们给出一个使用 OpenGL 的 API 直接写的 MFC Console 程序,使用的是辅助库函数,因此比较简单,我们只介绍下代码,以后的写法不会使用这种控制台程序的方式,而是使用 MFC 的 SDI :
因为之前一直在搞java,突然跳到C++,我还真的不行,再加上又是需要用到MFC,VC,这些东西我想光会就至少的半年,怎么办呢?硬着头皮上!
不过说实在的,学了一点C++,倒是对Java以前很多不是很明白的地方有点领悟的感觉;),比如一直没有明白Java里:调用构造函数分配空间的时候,秘密传一个This给构造函数。这句话什么意思?看了C++后明白了,原来This是作为一个空白空间的地址传过去的啦!每个对象都要有唯一的标致符,是什么?当然是对象的地址啦!,废话少讲,开始OpenGL序言。
先我们给出一个使用 OpenGL 的 API 直接写的 MFC Console 程序,使用的是辅助库函数,因此比较简单,我们只介绍下代码,以后的写法不会使用这种控制台程序的方式,而是使用 MFC 的 SDI :
首先需要在 Settings/Project Settings/Link/[Object/Library Module]
中键入: opengl32.lib glu32.lib glaux.lib
,以引入 OpenGL
的函数库:
// CConGL.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#pragma warning(disable : 4305)
#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glaux.h>
void myInit(void);
void CALLBACK myReshape(GLsizei w,GLsizei h);
void CALLBACK myDisplay(void);
void myInit()
{
//
清除背景颜色
glClearColor(0.0,0.0,0.0,0.0);
//
图形绘制模式
glShadeModel(GL_FLAT);
}
void CALLBACK myReshape(GLsizei w,GLsizei h)
{
//
窗口改变时视口变化
glViewport(0,0,w,h);
}
void CALLBACK myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
//
图形绘制颜色
glColor4f(0.2,0.6,1.0,1.0);
//
设置旋转
glRotatef(60.0,1.0,1.0,1.0);
//
绘制图形
auxWireSphere(1.0);
//
绘制完成
glFlush();
}
int main(int argc, char* argv[])
{
//
初始化显示模式
auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
auxInitPosition(0,0,400,400);
auxInitWindow("first application");
myInit();
auxReshapeFunc(myReshape);
auxMainLoop(myDisplay);
return 0;
}
拿去运行吧,哈哈,那你就等着出出一个莫名其妙的地球吧,说实在的,我到目前尚未理解那些语句的意思。