
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT)
glColor3f(1.0f, 0.0f, 0.0f)
float x = 0.0f
float y = 0.0f
float R = 50.0f
float pi = 3.1415927
for(int i = 0i<10i++)
{
GL_LINES(R*cos(i*pi/5), R*sin(i*pi/5),R*cos((i+1)*pi/5), R*(sin(i+1)*pi/5))
}
glFlush()
}
GL_POINTS方式类滚脊祥似,就是把循环里面的绘制函数变成GL_POINTS并带入单个点的x和y坐标就好了。至于其他大搏参数下的截图,你就自野虚己修改下循环参数就可以了。
#include <glut.h>#include <math.h>
#include <stdlib.h>
#include <gl/GL.h>
#include <gl/GLU.h>
#include <gl/glaux.h>
#include <Windows.h>
#pragma comment(lib,"glaux.lib")
#pragma comment(lib,"glu32.lib")
#pragma comment(lib,"glut32.lib")
#pragma comment(lib,"opengl32.lib")
class scrpt
{
public:
GLint x,y
}
void myinit(void)
void display(void)
void setPixel(GLint x,GLint y)
void circlePlotPoint(scrpt circCtr,scrpt circpt)
void circleMidpoint(scrpt circCtr,GLint radius)
void setPixel(GLint x,GLint y)
{
glBegin(GL_POINTS)
glVertex2i(x,y)
glEnd()
}
void myinit(void)
{
glClearColor(0.0,0.0,0.0,0.0)
glMatrixMode(GL_PROJECTION)
gluOrtho2D(0.0,800.0,0.0,600.0)
}
void circleMidpoint(scrpt circCtr,GLint radius)
{
scrpt circpt
GLint p=1-radius
circpt.x=0
circpt.y=radius
void circlePlotPoints(scrpt,scrpt)
circlePlotPoints(circCtr,circpt)
while(circpt.x<circpt.y)
{
circpt.x++
if(p<0)
p+=2*circpt.x+1
else
{
circpt.y--
p+=2*(circpt.x-circpt.y)+1
}
circlePlotPoints(circCtr,circpt)
}
}
void circlePlotPoints(scrpt circCtr,scrpt circpt)
{
setPixel(circCtr.x+circpt.x,circCtr.y+circpt.y)
setPixel(circCtr.x-circpt.x,circCtr.y-circpt.y)
setPixel(circCtr.x+circpt.x,circCtr.y-circpt.y)
setPixel(circCtr.x-circpt.x,circCtr.y+circpt.y)
setPixel(circCtr.x+circpt.y,circCtr.y+circpt.x)
setPixel(circCtr.x+circpt.y,circCtr.y-circpt.x)
setPixel(circCtr.x-circpt.y,circCtr.y+circpt.x)
setPixel(circCtr.x-circpt.y,circCtr.y-circpt.x)
}
void display(void)
{ scrpt point
point.x=200
point.y=210
int radius=20
glClear(GL_COLOR_BUFFER_BIT)
glColor3f(0.5,0.6,1.0)
circleMidpoint(point,radius)
glFlush()
}
void main(int argc,char **argv)
{
glutInit(&argc,argv)
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
glutInitWindowPosition(100,100)
glutInitWindowSize(400,400)
glutCreateWindow("pointcircle")
myinit()
glutDisplayFunc(display)
glutMainLoop()
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)