当前位置:网站首页>OpenGL三维图形绘制
OpenGL三维图形绘制
2022-07-07 06:18:00 【这辈子秃头是不可能的】
#include "stdafx.h"
#include<GL\glut.h>
#include<gl\glut.h>
#include<GL\glaux.h>
static GLsizei iMode = 1;
static GLfloat xRot = 0;
static GLfloat yRot = 0;
GLUquadricObj *obj;
void Initial(){
glClearColor(1, 1, 1, 1);
glColor3f(0, 0, 0);
obj = gluNewQuadric();
gluQuadricDrawStyle(obj, GLU_LINE);
}
void ChangeSize(int w, int h){
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1.5, 1.5, -1.5, 1.5);
}
void Display(){
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(xRot, 1, 0, 0);
glRotatef(yRot, 0, 1, 0);
switch (iMode){
case 1:
glutWireTetrahedron(); break;
case 2:
glutSolidTetrahedron(); break;
case 3:
glutWireOctahedron(); break;
case 4:
glutSolidOctahedron(); break;
case 5:
glutWireSphere(1, 15, 15); break;
case 6:
glutSolidSphere(1, 15, 15); break;
case 7:
glutWireTeapot(1); break;
case 8:
glutSolidTeapot(1); break;
case 9:
gluSphere(obj, 1, 15, 15); break;
case 10:
gluCylinder(obj, 1, 0, 1, 15, 15); break;
case 11:
gluPartialDisk(obj, 0.3, 0.8, 15, 15, 30, 260); break;
default: break;
}
glFlush();
}
void ProcessMenu(int value){
iMode = value;
glutPostRedisplay();
}
void SpecialKeys(int key, int x, int y){
if (key == GLUT_KEY_UP) xRot -= 5;
if (key == GLUT_KEY_DOWN) xRot += 5;
if (key == GLUT_KEY_LEFT) yRot -= 5;
if (key == GLUT_KEY_RIGHT) yRot += 5;
if (xRot > 356) xRot = 0;
if (xRot < -1) xRot = 355;
if (yRot > 356) yRot = 0;
if (yRot < -1) yRot = 355;
glutPostRedisplay();
}
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 100);
glutCreateWindow("Hello");
int nGlutPolyMenu = glutCreateMenu(ProcessMenu);
glutAddMenuEntry("线框正四面体", 1);
glutAddMenuEntry("实体正四面体", 2);
glutAddMenuEntry("线框正八面体", 3);
glutAddMenuEntry("实体正八面体", 4);
int nGlutCurveMenu = glutCreateMenu(ProcessMenu);
glutAddMenuEntry("线框球面", 5);
glutAddMenuEntry("实体球面", 6);
glutAddMenuEntry("线框茶壶", 7);
glutAddMenuEntry("实体茶壶", 8);
int nGluCurveMenu = glutCreateMenu(ProcessMenu);
glutAddMenuEntry("线框球面", 9);
glutAddMenuEntry("线框圆锥面", 10);
glutAddMenuEntry("线框圆环面", 11);
int nMainMenu = glutCreateMenu(ProcessMenu);
glutAddSubMenu("GLUT多面体", nGlutPolyMenu);
glutAddSubMenu("GLUT曲面", nGlutCurveMenu);
glutAddSubMenu("GLU曲面", nGluCurveMenu);
glutAttachMenu(GLUT_RIGHT_BUTTON);
glutDisplayFunc(Display);
glutReshapeFunc(ChangeSize);
glutSpecialFunc(SpecialKeys);
Initial();
glutMainLoop();
}
用vs2013编写,运行后单机右键会展开菜单
边栏推荐
- Tronapi wave field interface - source code without encryption - can be opened twice - interface document attached - package based on thinkphp5 - detailed guidance of the author - July 6, 2022 - Novice
- Implement custom memory allocator
- 求有符号数的原码、反码和补码【C语言】
- go mod module declares its path as: gtihub. com/xxx-xx but was required as:xx-xx
- Mock. JS usage details
- 联想混合云Lenovo xCloud:4大产品线+IT服务门户
- 模拟卷Leetcode【普通】1706. 球会落何处
- Skills that testers must know: Selenium's three waiting ways are interpreted clearly
- Calling the creation engine interface of Huawei game multimedia service returns error code 1002, error message: the params is error
- [Yugong series] February 2022 U3D full stack class 005 unity engine view
猜你喜欢
FPGA knowledge accumulation [6]
Simple use of Xray
为什么要选择云原生数据库
Arm GIC (IV) GIC V3 register class analysis notes.
All about PDF crack, a complete solution to meet all your PDF needs
ncs成都新电面试经验
Greenplum 6.x monitoring software setup
C language for calculating the product of two matrices
Pointer advanced, string function
数据分析方法论与前人经验总结2【笔记干货】
随机推荐
Category of IP address
详解华为应用市场2022年逐步减少32位包体上架应用和策略
Mock.js用法详解
Newly found yii2 excel processing plug-in
With an annual salary of 50W, Alibaba P8 will come out in person to teach you how to advance from testing
Golang etcdv3 reports an error. The attribute in grpc does not exist
Three usage scenarios of annotation @configurationproperties
Upload an e-office V9 arbitrary file [vulnerability recurrence practice]
Output a spiral matrix C language
About using CDN based on Kangle and EP panel
Uniapp wechat applet monitoring network
[Yu Yue education] C language programming reference of Zhongbei College of Nanjing Normal University
Pointer advanced, string function
Frequently Asked Coding Problems
Esp32-ulp coprocessor low power mode RTC GPIO interrupt wake up
MAC OSX php dyld: Library not loaded: /usr/local/xxxx. dylib
Calling the creation engine interface of Huawei game multimedia service returns error code 1002, error message: the params is error
Greenplum 6.x common statements
Recommended by Alibaba P8, the test coverage tool - Jacobo is very practical
Markdown editor Use of MD plug-in