小编Dan*_*wis的帖子

奇怪的纹理行为C++ OpenGL

我目前正在学习C++游戏库类,对于这个类来说,我们的长达四分之一的项目是构建一个支持各种事物的渲染器.对于当前的实验室,我们的讲师给了我们一个关于手动将bmp加载到OpenGL中并将其应用于我们的几何图形的教程.

教程:http://www.opengl-tutorial.org/beginners-tutorials/tutorial-5-a-textured-cube/

按照本教程逐步完成后,我的纹理有一些有趣的行为.我去过其他同学,高年级学生和多位导师.他们都不知道发生了什么.考虑到实验室中几乎每个人的代码都是相同的,而且我是唯一一个遇到这个问题的代码,我不禁感到困惑.

我正在使用以下OBJ和纹理.我将OBJ转换为我自己构建的OBJ转换器中的二进制文件.我的渲染器接收这个二进制文件并将数据发送到OpenGL顶点缓冲区.

OBJ和纹理:http://www.models-resource.com/playstation_2/ratchetclank/model/6662/

我的朋友和我有相同的二进制文件结构,所以我给了他一份我的二进制文件来检查UV是否正确.他渲染出一只纹理完美的鸡肉,同时心灵呈现出看起来像纹理的鸡肉水平压扁到模型长度的1/16,然后重复了一堆.我会发布图片,但我是新来的,并没有足够的声誉这样做.在周末我会尽力提高自己的声誉,因为我真的认为这有助于直观地看到我的问题.

我会发布我的源代码,但是这个项目接近大约16,000行代码,我怀疑是否有人愿意通过搜索来找到陌生人的问题.

任何建议都会有所帮助,我主要是对使用OpenGL纹理或一般的.bmps时可能出现的常见错误感到好奇.

谢谢你.

// -----编辑一个----- //

我朋友的结果

一

我的结果

在此输入图像描述

我担心我不允许使用其他库.我可能应该在我的帖子中提到过.

这是我在bmp中加载的代码,我从我学校的一位上层人员那里听到我忽略了一些叫做位深度的东西.我知道这个教程非常糟糕,而且我宁愿学会做正确的事,而不是只是勉强学会.如果任何人有关于这个问题的良好资源,我将非常感谢被指向这个方向.

unsigned char header[54];
unsigned int dataPos;
unsigned int width, height;
unsigned int imageSize; 
unsigned char * data;

FILE * file = fopen(filePath, "rb");
if (!file)
{
    printf("\nImage could not be opened");
    exit(1);
}

if (fread(header, 1, 54, file) != 54){
    printf("\nNot a correct BMP file");
    exit(1);
}

if (header[0] != 'B' || header[1] != 'M'){
    printf("\nNot a correct …
Run Code Online (Sandbox Code Playgroud)

c++ opengl textures rendering bmp

5
推荐指数
0
解决办法
433
查看次数

标签 统计

bmp ×1

c++ ×1

opengl ×1

rendering ×1

textures ×1