如何设置opengl对象的大小?
Posted
技术标签:
【中文标题】如何设置opengl对象的大小?【英文标题】:How to set the size of an opengl object? 【发布时间】:2019-10-30 18:30:53 【问题描述】:我必须在opengl中显示一个对象(这是一个作业),我在互联网上找到了一个很好的代码,但是显示的对象的大小非常小,我不知道如何更改它以显示更大尺寸的对象。
我认为我必须修改reshape,drawObject和display函数,但是我不知道opengl和它的函数,所以我不知道我应该修改哪部分代码。
#include<stdio.h>
#include"glut.h"
GLuint object;
float objectrot;
char ch = '1';
void loadObj(const char* fname)
FILE* fp;
int read;
GLfloat x, y, z;
char ch;
object = glGenLists(1);
fp = fopen(fname, "r");
if (!fp)
printf("can't open file %s\n", fname);
exit(1);
glPointSize(2.0);
glNewList(object, GL_COMPILE);
glPushMatrix();
glBegin(GL_POINTS);
while (!(feof(fp)))
read = fscanf(fp, "%c %f %f %f", &ch, &x, &y, &z);
if (read == 4 && ch == 'v')
glVertex3f(x, y, z);
glEnd();
glPopMatrix();
glEndList();
fclose(fp);
void reshape(int w, int h)
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60, (GLfloat)w / (GLfloat)h, 0.1, 1000.0);
glMatrixMode(GL_MODELVIEW);
void drawObject()
glPushMatrix();
glTranslatef(0, -40.00, -105);
glColor3f(255, 255, 255);
glScalef(0.1, 0.1, 0.1);
glRotatef(objectrot, 0, 1, 0);
glCallList(object);
glPopMatrix();
objectrot += 0.001;
if (objectrot > 360)objectrot -= 360;
void display(void)
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
drawObject();
glutSwapBuffers();
int main(int argc, char** argv)
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(800, 450);
glutInitWindowPosition(20, 20);
glutCreateWindow("ObjLoader");
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutIdleFunc(display);
loadObj("cat.obj");
glutMainLoop();
return 0;
我希望窗口中有一个更大的对象,但它非常小
【问题讨论】:
【参考方案1】:您需要增加比例因子。
void drawObject()
glPushMatrix();
glTranslatef(0, -40.00, -105);
glColor3f(255, 255, 255);
glScalef(1.0, 1.0, 1.0);
glRotatef(objectrot, 0, 1, 0);
glCallList(object);
glPopMatrix();
objectrot += 0.001;
if (objectrot > 360)objectrot -= 360;
您应该将更大的数字传递给glScalef()
。试试 1.0 看看是否可行。
【讨论】:
它不起作用,我现在在窗口中看不到对象以上是关于如何设置opengl对象的大小?的主要内容,如果未能解决你的问题,请参考以下文章