为什么我在使用此代码时收到“setPixel not Defined”错误?
#include <windows.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include<GL/glut.h>
inline int round(const float a)
{
return int (a+0.5);
}
void init(void)
{
glClearColor(0.0f,0.0f,1.0f,1.0f);
gluOrtho2D(0.0,200.0,0.0,200.0);
glMatrixMode(GL_PROJECTION);
}
void LineSegment(int xa, int ya,int xb,int yb)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f,0.0f,0.0f);
printf("Enter the initial value");
scanf("%d%d",&xa,&ya);
printf("Enter the final value");
scanf("%d%d",&xb,&yb);
int dx=xb-xa;
int dy=yb-ya;
int steps,k;
float xIncrement,yIncrement,x=xa,y=ya;
if(fabs(dx)>fabs(dy))
steps=fabs(dx);
else
steps=fabs(dy);
xIncrement=dx/(float)steps;
yIncrement=dy/(float)steps;
setPixel(round(x),round(y));
for(k=0;k<steps;k++);
{
x += xIncrement;
y += yIncrement;
setPixel(round(x),round(y));
}
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
glutCreateWindow("DDA Line Algorithm");
glutDisplayFunc(LineSegment);
init();
glutMainLoop();
return 0;
}
最佳答案
因为 OpenGL 或 GLUT 中没有 setPixel
方法,而且据我从您的代码中看到,您也没有定义一个方法。 OpenGL 处理点、线、三角形等渲染基元,但不直接在屏幕上设置单个像素。由于还不清楚你想要实现什么建议:
- 如果您想在 OpenGL 中绘制一条线,请使用适当的方法,例如
glBegin(GL_LINES) 等。
(尽管它们已被弃用,不应再使用。)或glDrawArrays (GL_LINES,...
。 - 如果目标是实现 dda 软件光栅化器,那么您可能必须将像素写入纹理,然后显示该纹理。
关于c - DDA画线算法有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31806853/