Проблема с “FMeshDrawSingleShaderBindings”

138
24 января 2020, 02:20

VS2017 жалуется на "FMeshDrawSingleShaderBindings не определён". В UE4 всё компилируется без проблем и объект создаётся на сцене. Но студия со времен начинает жаловаться на переменную, которая ссылается на данный тип с ошибкой:

Ошибка (активно) E0434 не удается инициализировать ссылку типа "FMeshDrawSingleShaderBindings &" (квалифицируется как неконстантная) со значением типа "FMeshDrawSingleShaderBindings"

Проблема появилась в следствии использования документации по UE4 Первый урок. Добавил заголовочник с именем проекта, изменил "MinimalCore.h" на "Engine.h" (в сети прочитал что это лучше, так как компилится быстрее).

main.h
#include "Engine.h"

Далее добавил строку ниже, при добавление VS2017 начала жаловаться на GENERATED_BODY(), что как бы по дефолту в каждом проекте. Гуглил ответы были, пробовал не особо помогло, но в конце концов руками исправил. Исправил просто поменяв либу то, что выше.

...
UParticleSystemComponent* OurParticleSystem;
...

После довабил ещё код (первые две строки дефолт в конструкторе и методе) и вроде бы всё ок.

ASpherePawn::ASpherePawn()
{
    // Set this pawn to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
    PrimaryActorTick.bCanEverTick = true;
    AutoPossessPlayer = EAutoReceiveInput::Player0;
}
// Called when the game starts or when spawned
void ASpherePawn::BeginPlay()
{
    Super::BeginPlay();
    USphereComponent* SphereComponent = CreateDefaultSubobject<USphereComponent>(TEXT("RootComponent"));
    RootComponent = SphereComponent;
    SphereComponent->InitSphereRadius(40.0f);
    SphereComponent->SetCollisionProfileName(TEXT("Pawn"));
}

И тут студия начала жаловаться на FMeshDrawSingleShaderBindings не определён. Перейдя по ошибке в заголовочник "VertexFactory.h" студия выдала ошибку, что ShaderBindings не определён. Участок кода из "VertexFactory.h" привёл ниже

void GetElementShaderBindings(
        const class FSceneInterface* Scene,
        const FSceneView* View,
        const class FMeshMaterialShader* Shader,
        bool bShaderRequiresPositionOnlyStream,
        ERHIFeatureLevel::Type FeatureLevel,
        const FVertexFactory* VertexFactory,
        const struct FMeshBatchElement& BatchElement,
        FMeshDrawSingleShaderBindings& ShaderBindings,
        FVertexInputStreamArray& VertexStreams
        ) const
    {
        if (Parameters)
        {
            checkSlow(VertexFactory->GetType() == VertexFactoryType);
            checkSlow(View || VertexFactoryType->SupportsCachingMeshDrawCommands());
            Parameters->GetElementShaderBindings(Scene, View, Shader, bShaderRequiresPositionOnlyStream, FeatureLevel, VertexFactory, BatchElement, ShaderBindings, VertexStreams);
        }
    }

Сам вопрос: С чем может быть связанна данная проблема в VS2017, так как код компилируется в EU4? Прежде настроил VS2017 по гайду данному в документации к UE4.

READ ALSO
Самый короткий способ записи в файл/чтения из него

Самый короткий способ записи в файл/чтения из него

Попался мне такой короткий код, который пытается читать из файла число, и если не может, то пишет туда то, что было в переменной (предполагается,...

143
Синхронизация вывода потоков POSIX

Синхронизация вывода потоков POSIX

Нужно что бы два потока параллельно печатали на экран(Первый поток печатает числа 1,2,3

150
как с вывести один элемент пары класса multimap?

как с вывести один элемент пары класса multimap?

Допустим у меня есть следующий код:

127
(c++)OpenGL и glfw - приключения на мою голову

(c++)OpenGL и glfw - приключения на мою голову

еееееПроблемы начались СРАЗУ

142