コード例 #1
0
ファイル: example.cpp プロジェクト: yuduosheng/OpenGL_common
/// OpenGL initializations
void init() {

	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0);
	glEnable(GL_LIGHT1);
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_NORMALIZE);

	// lighting setup
	GLfloat mat_A[] = { 0.3, 0.3, 0.3, 1.0 };
	GLfloat mat_D[] = { 0.5, 0.0, 0.75, 1.0 };
	GLfloat mat_S[] = { 1.0, 1.0, 1.0, 1.0 };
	GLfloat shine[] = { 128.0 };
	glMaterialfv(GL_FRONT, GL_AMBIENT, mat_A);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_D);
	glMaterialfv(GL_FRONT, GL_SPECULAR, mat_S);
	glMaterialfv(GL_FRONT, GL_SHININESS, shine);

	GLfloat left_light_position[] = { 0.0f, 2.0f, 2.0f, 0.0f };
	GLfloat right_light_position[] = { 0.0f, -2.0f, 2.0f, 0.0f };
	GLfloat left_diffuse_light[] = { 1.0f, 1.0f, 1.0f, 1.0f };
	GLfloat right_diffuse_light[] = { 1.0f, 1.0f, 1.0f, 1.0f };
	glLightfv(GL_LIGHT0, GL_POSITION, left_light_position);
	glLightfv(GL_LIGHT1, GL_POSITION, right_light_position);
	glLightfv(GL_LIGHT0, GL_DIFFUSE, left_diffuse_light);
	glLightfv(GL_LIGHT1, GL_DIFFUSE, right_diffuse_light);

	glClearColor(1, 1, 1, 1);
	glColor4f(1, 1, 0, 1);
	rendermode = SMOOTH;
	sceneT.identity();

	std::time(&start);
	frame = 0;
}
コード例 #2
0
ファイル: example.cpp プロジェクト: yuduosheng/OpenGL_common
/// Implements the "zoomout" operation. Enlarges the view of the scene.
void zoomOut() {

	AMatrix<float> mT;
	mT.identity();
	mT.scaling(1.0 / 1.2);
	sceneT = mT*sceneT;
}
コード例 #3
0
ファイル: example.cpp プロジェクト: yuduosheng/OpenGL_common
/// Mouse move function
void mousemove(int x, int y) {

	if (buttonpressed == GLUT_MIDDLE_BUTTON) { // rotations handler
		AMatrix<float> mT;
		arcball.drag(x, winh - y, &mT);
		sceneT = mT*sceneIniT;
	}
	else if (buttonpressed == GLUT_RIGHT_BUTTON) { // translations handler
		double xw, yw, zw;
		screenToWorld(x, winh - y, xw, yw, zw);
		AMatrix<float> mT;
		mT.identity();
		mT.translation(xw - xwini, yw - ywini, zw - zwini);
		sceneT = mT*sceneIniT;
	}
	else if (buttonpressed == GLUT_LEFT_BUTTON) {
		Point2 p(x, winh - y);
		stroke.push_back(p);
	}
	glutPostRedisplay();
}