首页 > 解决方案 > 2D 等距立方体绘制

问题描述

我想画一个等距立方体,如下所示,这样我就可以获得 3d 图形的直边线。第三张图片是我想要的一个例子 - 外立方体上的直线。从实验来看,这不适用于使用透视变换的 3D。

在信息图中,我尝试绘制底部正方形(剪切 30,旋转 -30),但它仍然有点偏离。

在此处输入图像描述

void draw_outer()
{
int ii; 
int w, h;
float equiv = 0.0f;
Matrix transform = IDENTITY_MATRIX;

w = glutGet(GLUT_WINDOW_WIDTH);
h = glutGet(GLUT_WINDOW_HEIGHT);

equiv = h/(float)w;

//vert scale
ScaleMatrix(&projection, 1.0f, .861f, 1.0f);
//shear x adjusted for aspect ratio
ConstructShearMatrixX(&projection, .5236f * equiv);
//rotation
//fix aspect ratio
RotateAboutZ(&projection, -.5236f);
ScaleMatrix(&projection, equiv, 1.0f, 1.0f);

glUniformMatrix4fv(uniform_ids[0], 1, GL_FALSE, model.m);
glUniformMatrix4fv(uniform_ids[1], 1, GL_FALSE, view.m);                                     
glUniformMatrix4fv(uniform_ids[2], 1, GL_FALSE, projection.m);
} 

我的顶点着色器只是 glPosition = (Projection * View * Model * position.xyz)。

在此处输入图像描述 在此处输入图像描述

标签: copengldrawing

解决方案


推荐阅读