?? ???? 扯淡的項目,沒有辦法,喝了老師的酒,只好硬著頭皮上。
因為之前一直在搞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;
}
??????? 拿去運行吧,哈哈,那你就等著出出一個莫名其妙的地球吧,說實在的,我到目前尚未理解那些語句的意思。
??????