高分提问一个关于opengl的三维显示的问题

Cadillac 2004-08-04 04:46:33
我使用opengl已经将一个数据块显示出来,可是现在显出来的是一个平面的图形

由于是初学着,现在我不明白究竟是怎么回师,应该怎么样才能将三维图形显示出来

应该设置什么呢?

我使用的是对地貌实行分层设色,这样是不是就不在需要light,我使用分层设色的方法然后使用了一个light,和视点重合,这样分层设色的颜色完全看不出来了 ,请问这是怎么回师
我该怎么样设置光源,谢谢
...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cadillac 2004-08-05
  • 打赏
  • 举报
回复
太平洋大哥作的是tin的渲染吧
能否将代码让小弟一看
谢谢
syy64 2004-08-04
  • 打赏
  • 举报
回复
地形分层设色。
void CTINObj::MakeModelColorLevel(CSetOpenGLEnv & Env)
{
int ip1,ip2,ip3;
double dz = MaxPoint3D.z - MinPoint3D.z;

glDisable(GL_TEXTURE_2D);
glEnable(GL_COLOR_MATERIAL);
for(int i=0;i<lTriNum;i++)
{
if(ppTriangle[i][6] < 0) continue;
ip1=ppTriangle[i][0];
ip2=ppTriangle[i][1];
ip3=ppTriangle[i][2];

glBegin(GL_TRIANGLES);

glNormal3fv(ppNormal[ip1]);
glColor3d(0.784*(pTinP3D[ip1].P3D[2]-MinPoint3D.z)/dz, 0.5f+0.4*(pTinP3D[ip1].P3D[2]-MinPoint3D.z)/dz, 0.0f);
glVertex3dv(pTinP3D[ip1].P3D);
glNormal3fv(ppNormal[ip2]);
glColor3d(0.784*(pTinP3D[ip2].P3D[2]-MinPoint3D.z)/dz, 0.5f+0.4*(pTinP3D[ip2].P3D[2]-MinPoint3D.z)/dz, 0.0f);
glVertex3dv(pTinP3D[ip2].P3D);
glNormal3fv(ppNormal[ip3]);
glColor3d(0.784*(pTinP3D[ip3].P3D[2]-MinPoint3D.z)/dz, 0.5f+0.4*(pTinP3D[ip3].P3D[2]-MinPoint3D.z)/dz, 0.0f);
glVertex3dv(pTinP3D[ip3].P3D);

glEnd();
}
}
alphapaopao 2004-08-04
  • 打赏
  • 举报
回复
如果你给的数据是平面数据,自然就显示平面图形。
如果你给的数据是三维数据,自然就显是三维图形。

使用 light 之后,必须使用 glMaterial ,不能使用 glColor。

19,466

社区成员

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

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