opengl中如何渲染环境画圆

cool_boy_ 2011-11-28 10:00:16
最近写了一个很简单的画圆程序,但是圆始终显示不出来。极度郁闷中。希望路过的过来看看,帮个忙吧!
#include "GL/glut.h"
#include"iostream.h"
#include<math.h>

#define PI 3.1415926536f
int r=100;
void init()
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_SMOOTH);
}
void reshape(int w,int h)
{
glViewport(0 ,0 ,(GLsizei) w , (GLsizei) h );
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0 ,0 ,(GLsizei) w , (GLsizei) h );
}
void drawcircle()
{
int i,n=360;
float t = 2 * PI / n,x,y;
glColor3f(1.0,1.0,1.0);
glBegin(GL_LINES);
for (i=0; i<n; i++)
{
x = r * sinf(t * i);
y = r * cosf(t * i);
glVertex2f(x, y);
}
glEnd();
}
void mytime()
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glTranslatef(0.0,0.0,-6.0);
drawcircle();
glPopMatrix();
glFlush();
}
void main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow("time");
init();
glutDisplayFunc(mytime);
glutReshapeFunc(reshape);
glutMainLoop();
}
...全文
160 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
simple_blue 2011-11-29
  • 打赏
  • 举报
回复
glColor3f(1.0,1.0,1.0);是什么颜色,会不会是颜色遮住了/
libralibra 2011-11-29
  • 打赏
  • 举报
回复
ls代码我没跑,但应该是对的,说说你的问题吧,得知其所以然嘛

...init里面的代码
gluOrtho2D(0 ,0 ,(GLsizei) w , (GLsizei) h );
...time里面的代码
glTranslatef(0.0,0.0,-6.0);

ortho2d是二维平面,显示范围0-w和0-h,z轴默认是0,就是z=0的二维平面的一部分
translate是移动,你的移动向量是(0,0,-6),会移入屏幕6个单位,将不再在ortho2d的平面上,所以看不到
ri_aje 2011-11-29
  • 打赏
  • 举报
回复
try this

#include <cmath>
#include <GL/glut.h>
#include <iostream>

#define PI 3.1415926536f
int r=1;

void init ()
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_SMOOTH);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1,-1,2,2);
}

void reshape (int w,int h)
{
glViewport(0,0,w,h);
}

void drawcircle ()
{
int i,n=360;
float t = 2*PI/n,x,y;
glColor3f(1.0,1.0,1.0);
glBegin(GL_LINES);
for (i=0; i<n; i++)
{
x = r*sinf(t*i);
y = r*cosf(t*i);
glVertex2f(x,y);
}
glEnd();
}

void mytime ()
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
drawcircle();
glutSwapBuffers();
}

int main (int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow("time");
init();
glutDisplayFunc(mytime);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧