成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

opengl第一個小游戲

#include <windows.h>    /* Windows的頭文件 */
#include <gl/gl.h>      /* OpenGL32庫的頭文件 */
#include <gl/glu.h>     /* GLu32庫的頭文件 */
/* #include <gl/glaux.h>    // GLaux庫的頭文件 */
#include <gl/glut.h>    /* Glut庫頭文件 */
#include <time.h>
#include <iostream>
using namespace std;
int	aa[20][20]; int xx = 0; int yy = 0;
int	screenWidth	= 640;
int	screenHeight	= 480;
int	cc		= 0;
/* 全局變量 */
int winWidth( 500 ), winHeight( 500 );

#define MAX_CHAR 128

void Initialization()
{
	glClearColor( 1.0f, 1.0f, 1.0f, 1.0f ); /* 設(shè)置背景色為白色 */
}


void OnReshape( int w, int h )
{
	winWidth	= w;
	winHeight	= h;

	glViewport( 0, 0, w, h );       /* 設(shè)置視區(qū)大小 */

	glMatrixMode( GL_PROJECTION );  /* 投影模式 */
	glLoadIdentity();               /* 載入單位矩陣以初始化當(dāng)前矩陣 */

	gluOrtho2D( 0, w, 0, h );       /* 將當(dāng)前繪圖區(qū)域設(shè)置為二維正交投影 */

	glMatrixMode( GL_MODELVIEW );   /* 模型視圖模式 */
	glLoadIdentity();               /* 初始化當(dāng)前矩陣 */
}


void drawString( const char* str )      /* 屏幕顯示字體 */
{
	static int	isFirstCall = 1;
	static GLuint	lists;

	if ( isFirstCall )
	{
		isFirstCall = 0;
		/* 申請MAX_CHAR個連續(xù)的顯示列表編號 */
		lists = glGenLists( MAX_CHAR );
		/* 把每個字符的繪制命令都裝到對應(yīng)的顯示列表中 */
		wglUseFontBitmaps( wglGetCurrentDC(), 0, MAX_CHAR, lists );
	}
	/* 調(diào)用每個字符對應(yīng)的顯示列表,繪制每個字符 */
	for (; *str != '\0'; ++str )
	{
		glCallList( lists + *str );
	}
}


void OnDisplay()
{
	glClear( GL_COLOR_BUFFER_BIT );

	glColor3f( 0.0f, 0.0f, 0.0f );          /* 設(shè)置字體顏色 */
	glRasterPos2i( 0, winHeight - 15 );     /* 起始位置 */
	drawString( "  Hello,OpenGL." );        /* 輸出的字符串 */

	glutSwapBuffers();                      /* 交換前后緩存區(qū) */
}


void myInit()
{
	glClearColor( 1.0, 1.0, 1.0, 0.0 );
/* 設(shè)置背景顏色為亮白 */
	glColor3f( 0.0f, 0.0f, 0.0f );
/* 設(shè)置繪圖顏色為黑色 */
	glPointSize( 4.0 );
/* 設(shè)置點的大小為4*4像素 */
	glMatrixMode( GL_PROJECTION );
/* 設(shè)置合適的矩陣 */
	glLoadIdentity();
	gluOrtho2D( 0.0, screenWidth, 0.0, screenHeight );
}


void myMouse2( int button, int state, int x, int y )
{
	if ( state == GLUT_DOWN )
	{
		if ( button == GLUT_RIGHT_BUTTON )
		{
			glClearColor( 1.0f, 0.0f, 0.0f, 0.0f );
			glClear( GL_COLOR_BUFFER_BIT );
			glFlush();
		}
	}
	return;
}


void drawDot( int x, int y )
{
	xx = (x - 30) / 20; yy = y / 20;
	glBegin( GL_POINTS );
	glVertex2i( x, y );
	/* 畫一些點 */

	if ( 30 < x && x < 430 && 0 < y && y < 400 )
		cc++;
	/* aa[yy][xx] == 0;  思路1 */

	cout << cc << endl;


	if ( cc >= 4 )
	{
		glVertex2i( 450, 450 );
		/* 思路3 */
		myMouse2( GLUT_RIGHT_BUTTON, GLUT_DOWN, 300, 400 );
	}
	glEnd();
}


void myMouse( int button, int state, int x, int y )
{
	if ( state == GLUT_DOWN )
	{
		if ( button == GLUT_LEFT_BUTTON )
		{
			drawDot( x, screenHeight - y );
			glFlush();
		}else if ( button == GLUT_RIGHT_BUTTON )
		{
			glClearColor( 1.0f, 0.0f, 0.0f, 0.0f );
			glClear( GL_COLOR_BUFFER_BIT );
			glFlush();
		}
	}
	return;
}


void myDisplay()
{
	glClear( GL_COLOR_BUFFER_BIT );
	/* 清屏 */
	glBegin( GL_POINTS );

	/* 畫一些點 */
	for ( int i = 0; i < 20; i++ )
	{
		for ( int j = 0; j < 20; j++ )
		{
			if ( aa[i][j] == 1 )
				glVertex2i( i * 20 + 33, j * 20 + 5 );
		}
	}
	glEnd();

	GLfloat curSizeLine = 2;
	glLineWidth( curSizeLine );
	glBegin( GL_LINES );
	for ( int i = 0; i <= 400; )
	{
		glVertex3f( 30, 0.0 + i, 0.0f ); glVertex3f( 430, 0.0 + i, 0.0f );
		glVertex3f( 30.0 + i, 0, 0.0f ); glVertex3f( 30.0 + i, 400, 0.0f );
		i += 20;
	}


	glEnd();
	glFlush();
	/* 送所有輸出到顯示設(shè)備 */
}


void funrand()
{
	int s = 4; int x = 0; int y = 0;
	srand( time( 0 ) );
	while ( s-- )
	{
		x		= rand() % 20; y = rand() % 20;
		aa[x][y]	= 1;
	}
}


int check()
{
	for ( int i = 0; i < 20; i++ )
	{
		for ( int j = 0; j < 20; j++ )
		{
			if ( aa[i][j] == 1 )
				return(1);
		}
	}
	return(0);
}


void main( int argc, char **argv )
{
	funrand();
	glutInit( &argc, argv );                        /* 初始化工具包 */
	glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );  /* 設(shè)置顯示模式 */
	glutInitWindowSize( 640, 480 );                 /* 設(shè)置窗口大小 */
	glutInitWindowPosition( 100, 150 );             /* 設(shè)置窗口在屏幕上的位置 */
	glutCreateWindow( "大家來找茬,找找點" );                /* 打開屏幕窗口    //注冊回調(diào)函數(shù) */
	Initialization();
	glutDisplayFunc( myDisplay );    glutMouseFunc( myMouse );
	myInit();
	glutReshapeFunc( OnReshape );                   /* 重繪函數(shù)     打印提示信息好難 */

	glutMainLoop();                                 /* 進入循環(huán) */
}


/****************
*
*  實現(xiàn)鼠標(biāo)監(jiān)聽
*  運行效果為面板上加點
**BUG1  打點越界
*有的點能返回1  有的點確不能
**模糊判斷
****************/

本文名稱:opengl第一個小游戲
標(biāo)題鏈接:http://jinyejixie.com/article34/gdpgse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、微信公眾號、企業(yè)網(wǎng)站制作虛擬主機、App開發(fā)、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
通山县| 陵水| 德兴市| 荣成市| 广宗县| 宾阳县| 莱芜市| 博罗县| 盘锦市| 诸城市| 肇庆市| 綦江县| 金堂县| 项城市| 通化市| 遵义县| 固原市| 盐源县| 盐边县| 聊城市| 邢台市| 迁西县| 宜宾县| 铜鼓县| 江西省| 武安市| 时尚| 青海省| 蓬安县| 建始县| 瑞金市| 旌德县| 嘉鱼县| 大理市| 台南市| 翼城县| 蓝山县| 读书| 松原市| 延吉市| 罗田县|