opengl怎么判断墙壁是正面还是侧面

zzz822163 2008-10-09 05:28:46
一间房子它有4个面啦,我们用眼睛当然一眼就看出来前面后面左右两面啦,那么用程序可以判断出来吗,

glTexCoord2f(0.000000,0.000000)
glVertex2f(-378.000000,308.000000)
glTexCoord2f(0.664063,0.000000)
glVertex2f(-293.000000,308.000000)
glTexCoord2f(0.664063,0.984375)
glVertex2f(-293.000000,371.000000)
glTexCoord2f(0.000000,0.984375)
glVertex2f(-378.000000,371.000000)

还有glVertex2f里负的参数是什么意思呢?用glVertex2f怎么画墙的侧面?
...全文
148 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzz822163 2008-10-10
  • 打赏
  • 举报
回复
我研究别人写好的程序,没有源文件,他就全用的glVertex2f,我不明白他是如何搞定的
而且glRotate , glTranslate他都没用,我就觉得有点奇怪
nifeinifei 2008-10-10
  • 打赏
  • 举报
回复
补充一下, 很好奇为什么不用glvertex3f(..)
nifeinifei 2008-10-10
  • 打赏
  • 举报
回复
可以的
用glRotate + glTranslate旋转加平移到正确的位置.
然后每次只用glVertex2f是么..

这样做就只需要指定两个坐标了, 当然旋转平移以后x不再画在x轴, y也不再画在y轴.

刚没事试了一下
glPushMatrix();
glBegin(GL_QUADS);
glColor3f(1, 1, 1);
glVertex2f(0.0, 0.0);
glVertex2f(0.0, 1.0);
glVertex2f(1, 1);
glVertex2f(1, 0);
glEnd();
glRotatef(90, 1, 0, 0);
glBegin(GL_QUADS);
glColor3f(0, 0, 1);
glVertex2f(0.0, 0.0);
glVertex2f(0.0, 1.0);
glVertex2f(1, 1);
glVertex2f(1, 0);
glEnd();
glPopMatrix();

是可以画出互相垂直的两个面的.
zzz822163 2008-10-10
  • 打赏
  • 举报
回复
我是glOrtho,那只能用glVertex3f了?
nifeinifei 2008-10-10
  • 打赏
  • 举报
回复
glVertex2f(float x, float y)只能标志x和y坐标的值, 那z坐标怎么办啊? 你的场景设置是glOrtho(..)还是gluOrhto2D(...)还是gluPerspective(...)啊?
zzz822163 2008-10-10
  • 打赏
  • 举报
回复
glVertex2f(float x, float y)我画出的都是平行于屏幕的,难道要画垂直于屏幕的只能用glVertex3f吗?
yale13 2008-10-10
  • 打赏
  • 举报
回复
你那段代码画的是一个贴了纹理的平面吧,不是空间的~空间判断各个面用的是法线~
nifeinifei 2008-10-10
  • 打赏
  • 举报
回复
glVertex2f(float x, float y)里的x和y是坐标值,当然可正可负. 楼主贴的纹理在坐标系的第二象限. 至于判断是立方体的哪个面, 如果是在三维坐标系下做图的话, 而且没有经过旋转的话(旋转了正面就可能变成侧面了),贴图坐标的z坐标都一样就是平行于屏幕的面, x坐标都一样就是垂直x轴的面, y坐标亦然...不知道你用什么标志一个纹理面哦. 四个顶点坐标吗? 如果是二维坐标系下做图, 要自己画成三维效果的画,就没必要用openGL了吧..
jacklzw88 2008-10-10
  • 打赏
  • 举报
回复
法线
zzz822163 2008-10-10
  • 打赏
  • 举报
回复
用glVertex3f可以描述出前后左右上下六个面,用glVertex2f怎么描述出左右两面?

zzz822163 2008-10-10
  • 打赏
  • 举报
回复
原来他房子是自己事先准备的一张图片,果然只是一个二维平面贴图
nifeinifei 2008-10-10
  • 打赏
  • 举报
回复
被打败了....这就是在一个二维平面上贴了个图, 正对着我们的. 就一个面. 如果一定要说的话, 只有正面, 没有侧面.
zzz822163 2008-10-10
  • 打赏
  • 举报
回复

2008.10.09 09:33:28 glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_WIDTH,0x13f5ec)
2008.10.09 09:33:28 glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_HEIGHT,0x13f5e0)
2008.10.09 09:33:28 glGenTextures(1,0x792eb1c)
2008.10.09 09:33:28 glBindTexture(GL_TEXTURE_2D,93)
2008.10.09 09:33:28 glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA4,64,64,0,GL_BGRA,GL_UNSIGNED_SHORT_4_4_4_4_REV,0x0000)
2008.10.09 09:33:28 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR)
2008.10.09 09:33:28 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR)
2008.10.09 09:33:28 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP)
2008.10.09 09:33:28 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP)
2008.10.09 09:33:28 glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE)
2008.10.09 09:33:28 glBindTexture(GL_TEXTURE_2D,93)
2008.10.09 09:33:28 glTexSubImage2D(GL_TEXTURE_2D,0,0,0,61,63,GL_BGRA,GL_UNSIGNED_SHORT_4_4_4_4_REV,0x7d666d0)
2008.10.09 09:33:28 glGetError()
2008.10.09 09:33:28 glColor4ub(255,255,255,255)
2008.10.09 09:33:28 glBindTexture(GL_TEXTURE_2D,93)
2008.10.09 09:33:28 glBegin(GL_QUADS)
2008.10.09 09:33:28 glTexCoord2f(0.000000,0.000000)
2008.10.09 09:33:28 glVertex2f(-65.000000,335.000000)
2008.10.09 09:33:28 glTexCoord2f(0.953125,0.000000)
2008.10.09 09:33:28 glVertex2f(-4.000000,335.000000)
2008.10.09 09:33:28 glTexCoord2f(0.953125,0.984375)
2008.10.09 09:33:28 glVertex2f(-4.000000,398.000000)
2008.10.09 09:33:28 glTexCoord2f(0.000000,0.984375)
2008.10.09 09:33:28 glVertex2f(-65.000000,398.000000)
2008.10.09 09:33:28 glEnd()

你上面说的两个函数他也没用,他画图的时候来来回回就用这么些函数
nifeinifei 2008-10-10
  • 打赏
  • 举报
回复
确实奇怪...你确定他没有在其他地方操作模型矩阵吗?比如glLoadMatrix()glMultiMatrix()什么的, 要不, 我猜的, 本来就是都画在同一平面的, 侧面就画成平行四边形, 哈哈
Hiiishe 2008-10-09
  • 打赏
  • 举报
回复
没明白你的意思。。。

19,469

社区成员

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

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