Привет, мир PBRTC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Привет, мир PBRT

Сообщение Anonymous »

Я хотел попробовать использовать код набора инструментов для физического рендеринга (PBRT). Итак, я клонировал репозиторий, создал проект, а затем попытался сделать «привет, мир»

Код: Выделить всё

#include 
#include
#include 

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;
}
Однако при компиляции я получаю ошибку

Код: Выделить всё

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
что я сделал не так?
изменить
Это полный вывод сборки при компиляции:

Код: Выделить всё

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 https://aka.ms/cpp/structured-output 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)'
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)'
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)'
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)'
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)'
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'
Надеюсь, это поможет в дальнейшей отладке


Подробнее здесь: https://stackoverflow.com/questions/793 ... ello-world
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»