不同机器上的不同照明行为
Different lighting behavior on different machines
我最近试图用OpenGL在C++中制作一个.obj网格加载程序,但遇到了一个奇怪的问题。
我有一个代表面的顶点坐标的std::vector<Vector3f>
,还有一个代表它的法线。在我的Vector3f
中,有一个std::array<float,3>
,所以我可以保留元素之间的邻接性。
// Vertex Pointer to triangle array
glVertexPointer(3,GL_FLOAT, sizeof(Vector3f), &(_triangles[0].data[0]));
// Normal pointer to normal array
glNormalPointer(GL_FLOAT,sizeof(Vector3f),&(_normals[0].data[0]));
当我在学校的电脑上编译这个程序时,它会给出很好的结果,但当我在台式电脑上编译它时,光线很奇怪,就像所有的脸都在反射相机中的光,所以它们看起来都是白色的。
你们知道我的问题是什么吗?
编辑:
我的电脑在ArchLinux下,我的窗口管理器很棒,这写在我电脑上的贴纸上
Intel Core i7-3632QM 2.2GHz with Turbo Boost up to 3.2GHz.
NVIDIA GeForce GT 740M
我对我学校的电脑了解不多,但我认为它们在Ubuntu上。
我成功了。
当然,有了这么少的信息,任何人都很难找到答案。
这是基于学校提供的来源,在某一点上,网格的光泽是这样定义的
glMaterialf (GL_FRONT, GL_SHININESS, 250);
然而,在Open GL文档中,它指定
只接受范围[0128]中的值。
所以我想OpenGL的不同版本对这个错误的反应不同:
- 我学校的OpenGL版本可能决定在[0128]中钳制亮度的值
- 我的电脑版本可能使光泽饱和,这就是为什么我得到了如此明亮的结果
不过,非常感谢你的帮助,也感谢你花时间阅读这篇文章。
相关文章:
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 64位机器上的C++内存对齐
- 如何制作无限制照明系统
- 使用不同的链接器会产生不同的机器代码吗
- 我写了一个C++程序来模拟Enigma机器.我没有得到输出
- 如何将经过训练的机器学习模型保存在python中并将其加载到C++中进行预测?
- C++ 两台不同机器之间通过wifi进行套接字通信
- 使用 ssh 重新连接到远程 Ubuntu 机器后,如何继续使用 gdb 调试 c++ 代码?
- 代码厨师 2019 年 12 月午餐时间愚蠢的机器
- CMake:尝试在 Jenkins 构建机器上运行时出现"Linked Library"错误 (0xc0000135)
- objdump 不显示机器代码,但显示 ASM
- 不同机器之间的标准时钟性能差异显著
- 如何使用Messenger示例连接两台机器
- 如何在拆分为多个文件的分层 SM 中退出子机器?(使用boost::MSM)
- 如果在创建对象时创建了 VPTR,那么为什么具有虚拟功能的类的大小在 32 位系统上为 4,在 64 位机器上为 8
- 当我在支持 avx2 的机器上编译并在另一台仅支持 avx 的机器上运行二进制文件时会发生什么?
- 如何在 LLVM 后端的机器级别找到 def-use 链
- 不同机器上的不同照明行为