我正在调整问题,或者我想要理解OBJ文件中的顶点/索引/面.我想最终以编程方式解析OBJ文件,但首先我需要了解如何手动完成.我正在使用GLWallpaperService(由网络上的开发人员提供)中的示例进行调整来完成此操作.
我遇到的问题是它似乎与他提供的代码一起工作,以生成一个具有不同颜色面的通用立方体,他必须单独实现和绘制.我调整后的代码试图从我从搅拌机输出并插入值的坐标中绘制一个基本的立方体.
public class GLCube {
private final int _nrOfVertices = 8;
private FloatBuffer _vertexBuffer;
private FloatBuffer _normalBuffer;
private ShortBuffer _indiceBuffer;
public GLCube() {
this.init();
}
private void init() {
// 3 is the number of coordinates to each vertex.
_vertexBuffer = BufferFactory.createFloatBuffer(_nrOfVertices * 3);
_normalBuffer = BufferFactory.createFloatBuffer(18);
_indiceBuffer = BufferFactory.createShortBuffer(72);
// Coordinates for the vertexes of the cube.
float[] vertexCoords = {
/*
1f, 1f, 0f,
0f, 1f, 0f,
0f, 0f, 0f,
1f, 0f, 0f,
1f, 0f, -1f,
1f, …Run Code Online (Sandbox Code Playgroud) 我的程序的目的是加载和显示每个面上具有相同纹理的简单立方体.但问题是输出不是很好(只有4个面被正确纹理化).我在纹理数组中尝试了很多坐标组合,但大多数情况下它更糟糕.是否可以使用glDrawElements函数正确设置纹理?
#define OFFSET_BUFFER(bytes) ((GLfloat *)NULL + bytes)
GLfloat vertices[] =
{
-1.0, -1.0, -1.0,
1.0, -1.0, -1.0,
1.0, 1.0, -1.0,
-1.0, 1.0, -1.0,
-1.0, -1.0, 1.0,
1.0, -1.0, 1.0,
1.0, 1.0, 1.0,
-1.0, 1.0, 1.0,
};
GLubyte indices[] =
{
0, 1, 2, 3,
4, 7, 6, 5,
0, 4, 5, 1,
3, 2, 6, 7,
0, 3, 7, 4,
1, 5, 6, 2
};
GLfloat textures[] =
{
0,0, 1,0, 1,1, 0,1,
0,1, 1,1, 1,0, 0,0,
/*//0,0, 1,0, 1,1, …Run Code Online (Sandbox Code Playgroud) 我一直在努力尝试一个游戏(XNA/C#)一个星期,现在我已经创造了一个地形.我最有可能使用基于体素的引擎(类似于Minecraft),实际上我已经尝试了很多可以使用Cube教程,但是大多数都是非常基本的并且对我没有太多帮助.现在我虽然关注结构:
游戏 - >处理主要任务.
- >调用世界级.- >
世界 - >负责世界上发生的所有任务,保留块数据.
- >在放弃屏幕偏移- >后触发Block的draw()函数
阻止 - >在由World给出的正确屏幕位置绘制块
但是,由于我需要渲染数千个块,这可能会非常困难,因为我没有3D编程经验.
使用36(6面x 6点,2个三角形)索引方法来执行此操作仍然有效,因为我可以想象这会占用大量内存吗?
我必须为 2x2x2 魔方编写一个解算器,但我不明白。我已经考虑过一些解决方案,但没有实现
有人能帮我吗?