1. Propósito del experimento
1. Comprender y dominar la instalación de OpenGL.
2. Domine una estructura de programa C++ basada en OpenGL simple.
3. Domina el marco del programa win32.
4. Domina el dibujo de algunos gráficos básicos en OpenGL.
2. Ambiente experimental
Requisitos de hardware:
PC, configuración principal, preferiblemente tarjeta gráfica independiente, memoria 512M o más.
Entorno de software:
Sistema operativo: Windows 7/Windows8
Herramientas de desarrollo de lenguaje: Microsoft Visual Studio 2010, Visual C++.
Marco del programa:
aplicación win32
3. Contenido y requisitos experimentales
Requisitos: copie las capturas de pantalla de efectos generadas por todos los pasos del experimento en el documento de informe del experimento para referencia futura y adjunte el código correspondiente. Método de denominación de documentos WORD: nombre del número de estudiante-número de serie del experimento-nombre del experimento.
Contenido: (Nota: para imprimir, establezca el fondo negro en color transparente)
1. Prepare el archivo de la biblioteca OpenGL. Como se muestra en la siguiente figura:
(1) Glut32.dll ruta %raíz del sistema%\ SysWOW64. Como se muestra abajo:
(2) Glut32.lib en RUTA\lib。
(3) Glut.h en PATH\Include. Como se muestra abajo:
system root es la ruta de instalación de windows7 o windows8.
ruta es la ruta de instalación de Visual Studio 2010.
2. Cree un archivo de proyecto y ejecute el programa de ejemplo my_first_program.cpp para ver el resultado.
1) Inicie Microsoft Visual Studio 2010, haga clic en "Archivo" -> "Nuevo" -> "Proyecto" en la barra de menú, como se muestra en la siguiente figura: 2) En el cuadro de diálogo "Nuevo proyecto", seleccione el proyecto Win32 de
Visual C++, y luego ingrese el nombre del proyecto (por ejemplo, lab1-basis), seleccione la ubicación para guardar el proyecto (), como se muestra en la figura a continuación, y haga clic en el botón "Aceptar".
3) Reemplace el archivo fuente de C++ (lab1-basis.cpp) en el "archivo fuente" del archivo del proyecto con el siguiente programa de muestra: el resultado de
ejecutar el programa de muestra anterior es crear una ventana llamada "hola", como se muestra en la figura a continuación:
3. Lea atentamente el programa de ejemplo anterior, comprenda la función de cada función y modifique el título de la ventana para que muestre "mi primer programa OpenGL". El código modificado y sus resultados de ejecución son los siguientes: (1) Modificar el código
:
char *argv[]={
"我的第一个OpenGL程序"," "};
glutCreateWindow("我的第一个OpenGL程序");
(2) Resultados de la ejecución:
4. Configuración de la ventana
De forma predeterminada, la posición de la ventana aparece en la esquina superior izquierda de la pantalla, con un tamaño de 300 x 300.
Requisitos:
1) Modifique la posición de la ventana para que esté en el centro de la pantalla
Modifique el código de la siguiente manera:
int cx = glutGet(GLUT_SCREEN_WIDTH);
int cy = glutGet(GLUT_SCREEN_HEIGHT);
glutInitWindowPosition((cx-500)/2,(cy-500)/2);
Los resultados de la ejecución son los siguientes:
2) Cambie el tamaño de la ventana al tamaño completo de la pantalla
La siguiente figura muestra la modificación del código y los resultados de la ejecución:
3) Modifique el tamaño de la ventana a otros tamaños
Modifique el código:
glutInitWindowSize(350,350);
Ejecución de resultados:
5. Configuración del color de fondo
De forma predeterminada, el color de fondo es negro
1) Configure el fondo de la ventana en blanco, como se muestra en la siguiente figura:
Modificación del código:
glClearColor(1.0f,1.0f,1.0f,1.0f);
Ejecutando resultados:
1) Establezca el fondo de la ventana en otro color, como se muestra en la siguiente figura:
Modificación de código:
glClearColor(7.0,-7.0,5.0,1.0f);
Resultado de ejecución: (fondo morado)
6. Dibujo gráfico básico
Dibujo rectangular:
1) Agregue "glRectf(0,0,1,1);" después de la declaración "glClear(GL_COLOR_BUFFER_BIT);" de la función de dibujo de pantalla y ejecute la programa para ver el efecto, la modificación del código y los resultados de la ejecución son los que se muestran en la siguiente figura: 2) Modifique las coordenadas diagonales del rectángulo
para ver qué cambios y problemas hay. :
glRectf(-0.8f,-0.8f,0.5f,0.5f);
Resultados de la ejecución:
3) De acuerdo con la función dada, intente dibujar gráficos básicos como una línea recta y un triángulo
(1) Línea recta:
modificación del código:
void display(void)
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //设置清屏颜色
glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓存区
glBegin(GL_LINES);
glVertex2f(0,0);
glVertex2f(0.8,0.8);
glEnd();
glFlush(); //用于刷新命令队列和缓存区,使所有尚未被执行的OpenGL命令得到执行
}
Resultado de ejecución:
(3) Triángulo:
modificación de código:
void display(void)
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //设置清屏颜色
glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓存区
glBegin(GL_TRIANGLES);
glVertex2f(0,0);
glVertex2f(0.5,0.5);
glVertex2f(0.0,0.8);
glEnd();
glFlush(); //用于刷新命令队列和缓存区,使所有尚未被执行的OpenGL命令得到执行
}
Ejecución de resultados:
7. Configuración del color del dibujo
1) Cambie los gráficos dibujados a rojo
Modificación del código:
glColor3f(1.0f, 0.0f, 0.0f); //设置为红色
glRectf(-0.1f, -0.1f, -0.2f, -0.2f); //矩形
2) Establecer las primitivas básicas dibujadas en diferentes colores
Modificación del código:
glColor3f(0.5f, 0.6f, 0.2f); //设置为草绿色
glBegin(GL_TRIANGLES);
glVertex2f(0.0f,0.0f);
glVertex2f(0.2f, 0.2f);
glVertex2f(0.0f, 0.2f);
glEnd();
resultado de la operación:
8. Dibuje figuras geométricas
1) Cambie la barra de título, agregue el número y el nombre del estudiante.
2) Dibujar más de dos formas geométricas básicas.
3) Establecer tres colores.
Modificación de código:
#include <windows.h>
#include <gl/glut.h>
void display(void)
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //设置清屏颜色
glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓存区
glColor3f(1.0f, 0.0f, 0.0f); //设置为红色
glRectf(-0.1f, -0.1f, -0.2f, -0.2f); //矩形
//绘制直线
glColor3f(0.0f, 1.0f, 0.0f); //设置为绿色
glBegin(GL_LINES);
glVertex2f(0.0f,0.0f);
glVertex2f(0.3f, -0.2f);
glEnd();
//画三角形,x1、y1、x2、y2、x3、y3为三角形顶点坐标
glColor3f(0.5f, 0.6f, 0.2f); //设置为草绿色
glBegin(GL_TRIANGLES);
glVertex2f(0.0f,0.0f);
glVertex2f(0.2f, 0.2f);
glVertex2f(0.0f, 0.2f);
glEnd();
glFlush(); //用于刷新命令队列和缓存区,使所有尚未被执行的OpenGL命令得到执行
}
int WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
char *argv[] = {
"hello"," " };
int argc = 2;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(350,350);
glutInitWindowPosition((glutGet(GLUT_SCREEN_WIDTH)-640)/2,
(glutGet(GLUT_SCREEN_HEIGHT)-480)/2);
glutCreateWindow("学号 姓名");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
resultado de la operación:
4. Preguntas para pensar
1. ¿Dónde está la ventana predeterminada en la pantalla? ¿Qué debo hacer si quiero cambiar la posición de la ventana en la pantalla? ¿Cómo cambiar el tamaño de la ventana?
Respuesta: La ventana predeterminada está en la esquina superior izquierda de la pantalla. Para cambiar la posición de la ventana, use la función glutInitWindowPosition, pasando las coordenadas de la esquina superior izquierda de la posición de la ventana de destino; para ajustar el tamaño de la ventana, use la función glutInitWindowSize, pasando la longitud y el ancho de la ventana.
2. ¿Dónde está el origen de coordenadas de dibujo predeterminado en la ventana de este experimento?
R: En la esquina superior derecha de la ventana.
3. ¿Cómo modificar el color de fondo y el color del dibujo? ¿Cuáles son los requisitos para el orden y la posición de los colores de dibujo?
Respuesta: Use la función glClearColor para modificar el color de fondo.Esta función se coloca en display() y se coloca delante de la instrucción glClear(). La modificación del color del dibujo usa la función glColor3f antes de glBegin().
4. Para "#include <gl/glut.h>", ¿en qué carpeta se debe colocar el archivo de encabezado?
Esta respuesta: debe colocarse en D:\vs2010\VC\include\gl\ (escriba de acuerdo con su propia ubicación de almacenamiento)