OpenGL纹理生成全黑的问题

新手上路,请多包涵

一.我正在做的任务

最近需要紧急用到OpenGL写一个作业,学习了一段时间,我现在想做的是通过纹理贴图的形式把已经生成的dicom图片(c++库没有编译好,所以用了dcm4che转化的)贴到图形上,然后z轴叠加,形成三维效果。

二.我遇到的问题

对于教程中的图片生成纹理没有问题,(使用stbi_load加载图片)可是当换成我自己的图片的时候,已经生成的图片如下:
纹理编程全黑了,我感觉这过程中可能有几步存在问题。

三.我已经尝试的方法

1.可能加载纹理函数(glTexImage2D)的参数问题

首先长宽都可以读出,nrChannels为1(可能是灰度图),尝试修改源数据类型为GL_LUMINANCE8,失败了

2.可能是路径或者生成图片格式的问题

路径问题好解决,查看一下就行,排除。生成图片的格式这个问题很迷,由于stbi_load返回错误no SOI,我想着是不是dcm4che生成的jpg和stbi_load要求的格式不一致,或者说不标准?我就尝试了生成png格式的图片,结果也是失败(而且对于两个png图片,都返回no SOI,但是只有我生成的图片是全黑。。)。

3.可能是dcm4che的问题,那我改成直接C++读取行吧

我于是尝试使用dcmtk直接读取dicom中的图像数据,然后把这个数据塞到glTexImage2D的data中,结果有点成效,如下图:

但是无论我怎末修改参数图片依旧这样(可能还有一些修改方式没想到?)

4.于是我打算换成c++生成图片并且作为纹理读取

打算使用cximage和dcmtk,但是很不幸,cximage编译失败。。。所有努力到此为止。

我有点迷,不知道哪里出现的问题,当然也不知道怎末解决,有没有大佬指出问题出在哪里或者帮我调试一下bug,留言或者qq(2279633462)均可,很急,感谢!

阅读 3.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进