admin管理员组文章数量:1201993
I wanted to try to use the code of the Physically Based Rendering Toolkit (PBRT). So I cloned the repo, built the project and then tried to do a "hello world"
#include <iostream>
#include <pbrt/pbrt.h>
#include <pbrt/util/transform.h>
using namespace pbrt;
int main() {
Point3f p(1, 2, 3);
Float mat[4][4] = {
{1.0, 0.0, 0.0, 0.0},
{0.0, 1.0, 0.0, 0.0},
{0.0, 0.0, 1.0, 0.0},
{0.0, 0.0, 0.0, 1.0}
};
Transform T(mat);
Point3f pNew = T(p);
return 0;
}
However, when compiling I get the error
Severity Code Description Project File Line Suppression State Details
Error C2440 'return': cannot convert from 'initializer list' to 'pbrt::Quaternion' cppplayground C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h 840
what have I done wrong?
edit
This is the full build output when I do the compilation:
Build started at 3:54 PM...
1>------ Build started: Project: cppplayground, Configuration: Debug x64 ------
1>Build started 1/21/2025 3:54:32 PM.
1>Target PrepareForBuild:
1> Structured output is enabled. The formatting of compiler diagnostics will reflect the error hierarchy. See for more details.
1>Target InitializeBuildStatus:
1> Touching "cppplayground\x64\Debug\cppplayground.tlog\unsuccessfulbuild".
1>Target ClCompile:
1> cppplayground.cpp
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\float.h(43,39): warning C4244: 'initializing': conversion from 'double' to 'const pbrt::Float', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(44,20): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(45,23): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(46,24): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(47,24): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(48,25): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(49,25): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(50,23): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(118,24): warning C4244: 'argument': conversion from 'float' to 'uint32_t', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(118,47): warning C4244: 'argument': conversion from 'float' to 'uint32_t', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(118,69): warning C4244: 'argument': conversion from 'float' to 'uint32_t', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(137,12): warning C4244: 'return': conversion from 'uint64_t' to 'uint32_t', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(270,19): warning C4244: 'return': conversion from 'int' to 'pbrt::Float', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(368,27): warning C4305: 'initializing': truncation from 'double' to 'pbrt::Float'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(410,17): error C3861: '__builtin_clz': identifier not found
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(435,17): error C3861: '__builtin_clzll': identifier not found
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(840,55): error C2440: 'return': cannot convert from 'initializer list' to 'pbrt::Quaternion'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(840,48):
1> 'pbrt::Quaternion::Quaternion': function does not take 2 arguments
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(840,48):
1> while trying to match the argument list '(pbrt::Vector3<pbrt::Float>, pbrt::Float)'
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(848,43): error C2440: 'return': cannot convert from 'initializer list' to 'pbrt::Quaternion'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(848,36):
1> 'pbrt::Quaternion::Quaternion': function does not take 2 arguments
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(848,36):
1> while trying to match the argument list '(pbrt::Vector3<pbrt::Float>, pbrt::Float)'
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(850,55): error C2440: 'return': cannot convert from 'initializer list' to 'pbrt::Quaternion'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(850,48):
1> 'pbrt::Quaternion::Quaternion': function does not take 2 arguments
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(850,48):
1> while trying to match the argument list '(pbrt::Vector3<pbrt::Float>, pbrt::Float)'
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(858,50): error C2440: 'return': cannot convert from 'initializer list' to 'pbrt::Quaternion'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(858,43):
1> 'pbrt::Quaternion::Quaternion': function does not take 2 arguments
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(858,43):
1> while trying to match the argument list '(pbrt::Vector3<pbrt::Float>, pbrt::Float)'
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(869,16): error C2440: 'return': cannot convert from 'initializer list' to 'pbrt::Quaternion'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(869,9):
1> 'pbrt::Quaternion::Quaternion': function does not take 2 arguments
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(869,9):
1> while trying to match the argument list '(pbrt::Vector3<pbrt::Float>, pbrt::Float)'
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\vecmath.h(1777,27): warning C4244: 'return': conversion from 'float' to 'uint16_t', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\color.h(359,22): warning C4244: 'return': conversion from 'int' to 'pbrt::Float', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\color.h(517,17): warning C4244: 'return': conversion from 'T' to 'uint8_t', possible loss of data
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\color.h(517,17): warning C4244: with
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\color.h(517,17): warning C4244: [
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\color.h(517,17): warning C4244: T=pbrt::Float
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\color.h(517,17): warning C4244: ]
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\color.h(543,35): warning C4305: 'argument': truncation from 'double' to 'pbrt::Float'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\color.h(546,35): warning C4305: 'argument': truncation from 'double' to 'pbrt::Float'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\lowdiscrepancy.h(46,76): warning C4244: 'argument': conversion from 'uint64_t' to 'uint32_t', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\lowdiscrepancy.h(127,24): warning C4244: 'initializing': conversion from 'uint64_t' to 'int', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\lowdiscrepancy.h(148,24): warning C4244: 'initializing': conversion from 'uint64_t' to 'int', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\lowdiscrepancy.h(149,28): warning C4244: 'initializing': conversion from 'uint64_t' to 'uint32_t', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\memory.h(108,29): warning C4267: '+=': conversion from 'size_t' to 'int', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\memory.h(112,19): warning C4267: '+=': conversion from 'size_t' to 'int', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\memory.h(143,29): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(659,15): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(789,20): warning C4244: 'initializing': conversion from 'T' to 'int', possible loss of data
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(789,20): warning C4244: with
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(789,20): warning C4244: [
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(789,20): warning C4244: T=pbrt::Float
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(789,20): warning C4244: ]
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(856,34): warning C4244: 'argument': conversion from 'double' to 'const _Ty', possible loss of data
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(856,34): warning C4244: with
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(856,34): warning C4244: [
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(856,34): warning C4244: _Ty=pbrt::Float
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(856,34): warning C4244: ]
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(887,19): warning C4244: 'return': conversion from 'const T' to 'pbrt::Float', possible loss of data
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(887,19): warning C4244: with
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(887,19): warning C4244: [
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(887,19): warning C4244: T=double
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(887,19): warning C4244: ]
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(975,39): warning C4244: 'argument': conversion from 'T' to 'const _Ty', possible loss of data
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(975,39): warning C4244: with
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(975,39): warning C4244: [
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(975,39): warning C4244: T=pbrt::Float
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(975,39): warning C4244: ]
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(975,39): warning C4244: and
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(975,39): warning C4244: [
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(975,39): warning C4244: _Ty=int
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(975,39): warning C4244: ]
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(976,39): warning C4244: 'argument': conversion from 'T' to 'const _Ty', possible loss of data
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(976,39): warning C4244: with
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(976,39): warning C4244: [
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(976,39): warning C4244: T=pbrt::Float
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(976,39): warning C4244: ]
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(976,39): warning C4244: and
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(976,39): warning C4244: [
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(976,39): warning C4244: _Ty=int
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\sampling.h(976,39): warning C4244: ]
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\spectrum.h(38,39): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\spectrum.h(380,49): warning C4244: 'argument': conversion from 'const pbrt::Float' to 'int', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\spectrum.h(380,37): warning C4244: 'argument': conversion from 'const pbrt::Float' to 'int', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\spectrum.h(418,52): warning C4244: 'argument': conversion from 'int' to 'pbrt::Float', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1> C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\spectrum.h(634,22): warning C4244: '=': conversion from 'double' to 'pbrt::Float', possible loss of data
1> (compiling source file 'cppplayground.cpp')
1>Done building target "ClCompile" in project "cppplayground.vcxproj" -- FAILED.
1>
1>Done building project "cppplayground.vcxproj" -- FAILED.
1>
1>Build FAILED.
1>
1>C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\float.h(43,39): warning C4244: 'initializing': conversion from 'double' to 'const pbrt::Float', possible loss of data
1>C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(44,20): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1>C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(45,23): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1>C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(46,24): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1>C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(47,24): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1>C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(48,25): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1>C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(49,25): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
1>C:\Users\usr\source\repos\pbrt-v4\src\pbrt\util\math.h(50,23): warning C4305: 'initializing': truncation from 'double' to 'const pbrt::Float'
I hope this helps for debugging further
本文标签: cPBRT39s hello worldStack Overflow
版权声明:本文标题:c++ - PBRT's hello world - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1738626002a2103467.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论