OPENGL实现DDA算法。麻烦高手帮忙查错。谢谢

mileir1 2008-09-27 12:47:04
我觉得没错啊。但是就是无法显示。图像。
谢谢高手们了。:)


// LINEDRAW.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include "windows.h"
#include "GL\glut.h"
#include "math.h"

#define DDA 1
#define Bresenham 2
#define MAX 100

static int m_type=1;

struct m_point
{
int x;
int y;
} pt[MAX];

void init()
{//初始化窗口
glClearColor(0.0,0.0,0.0,0.0);
glColor3f(255,0,0);
glPointSize(5.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,640,0,480);
}

void CreateMenu(int value)
{
switch(value)
{
case 1:
m_type=1;
break;
case 2:
m_type=2;
break;
}
}

int n_click=0;

void Mouse(int button,int state,int x,int y)
{
if(m_type == 1)
{
if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
if(n_click == 0)
{
pt[n_click].x=x;
pt[n_click].y=y;
}
else
{
int i=0;
pt[n_click].x=x;
pt[n_click].y=y;
double dx=pt[n_click].x-pt[n_click-1].x;
double dy=pt[n_click].y-pt[n_click-1].y;
double Length = fabs(dx)>=fabs(dy)?fabs(dx):fabs(dy);
double deltx=dx/Length;
double delty=dy/Length;
int m_x=int(pt[n_click].x);
int m_y=int(pt[n_click].y);
glBegin(GL_POINTS);
while(i<=Length)
{
glVertex2i(m_x,m_y);
m_x+=deltx;
m_y+=delty;
i++;
}
glEnd();
glFlush();
}
n_click++;
}
}

if(m_type == 2)
{
}
}

void Display()
{
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
glutSwapBuffers();
}

void main(int argc,char* argv[])
{
glutInitDisplayMode(GLUT_DOUBLE);
glutInitWindowSize(640,480);
glutInitWindowPosition(100,100);
glutCreateWindow("直线画法实现");
init();

glutMouseFunc(Mouse); //响应鼠标
//右键建立菜单
glutCreateMenu(&CreateMenu);
glutAddMenuEntry("DDA算法",1);
glutAddMenuEntry("Bresenham算法",2);
glutAttachMenu(GLUT_RIGHT_BUTTON);

// glutMotionFunc(Motion);
glutDisplayFunc(Display);
glutMainLoop();
}
...全文
222 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightxu 2008-10-09
  • 打赏
  • 举报
回复
我也没有用过,不过你可以在网上查一查!我查了一下,但是我没有办法确认,你试一试!
vista:
显示属性---------右键桌面——个性化,就是显示属性。 应该就是这个!你试验一下!

配置属性--------下载一个everest 电脑所有信息都一目了然 有什么不对劲的地方都可以看出来·· 不过有些JS会改硬件的信息 这就需要从硬件外表的参数来核对了

这里有更详细的!你可以看看!这个是xp or vista的,我也搞不清楚!至今还没有用过这个系统,所以比较遗憾!!!解决了,可以发帖与大家分享一下![size=11px][/size]http://benyouhui.it168.com/viewthread.php?tid=748300



就在里面的:“疑难解答”里!
brightxu 2008-10-09
  • 打赏
  • 举报
回复
vista !难道桌面属性里没有调节显示设置的这个属性吗?就在里面!应该就是DirectX加速的问题!你可以查找相关书籍,看看vista里的这个属性怎么设置!
敬候佳音!
mileir1 2008-10-04
  • 打赏
  • 举报
回复
我用的是VISTA。没找到硬件加速。。。。
高手能不能再多指教两句。呼呼。
brightxu 2008-10-01
  • 打赏
  • 举报
回复
lz,怎么不结贴啊???
brightxu 2008-09-30
  • 打赏
  • 举报
回复
对不起,漏了一点,应该选择属性后,点击高级,然后在做如上的选择!!!你试试!!!!应该没有问题了!!!
brightxu 2008-09-30
  • 打赏
  • 举报
回复
设置以下显示器的属性,我的也出现过这个问题!在桌面点击鼠标右键,选择属性,然后选择疑难解答,然后把硬件加速拉小几个格,试试!在你显示的最佳效果时,确定推出就可以了!!!!!那是因为你用的不是DirectDraw,而是OPengl!所以会这么样!!
引力场变动源 2008-09-30
  • 打赏
  • 举报
回复
不是很明白,你输出一下所有点的坐标看看。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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