小编Kat*_*nie的帖子

在一块白板上绘图(渲染目标)被复制到所有白板?

我正在使用虚幻引擎4 VR内容示例,它有一个可以绘制的白板.它使用渲染目标将线条渲染到画布.

问题是,当我将白板复制到级别中的其他位置时,它会显示相同的图形,如下所示:

重复绘图

这是我使用的材料和纹理:

材质和渲染目标纹理

我尝试制作材料和纹理的副本并在其中一个白板上使用它,但结果相同.我不确定为什么渲染目标没有实例/唯一?为什么它在白板的多个实例上绘制相同的东西?

编辑(附加详细信息):我制作了原始渲染目标的副本,并尝试指定相反,我还制作了原始的材质实例,并为复制指定了但仍然是同一个问题.我试图动态创建一个渲染目标和材质实例,你可以在这里看到https://answers.unrealengine.com/questions/828892/drawing-on-one-whiteboard-render-target-is-copied.html,但是我无法借鉴它; 所以我只对其中两个做了它,它仍然有同样的问题

rendertarget unreal-engine4

6
推荐指数
1
解决办法
481
查看次数

虚幻引擎4:未调用C ++委托

我一直在努力将一些蓝图逻辑转换为C ++。我拥有的一件事是一个按钮。可以在VR中按下该按钮,并具有一个委托,该委托被调用以通知任何已注册的函数按下按钮。这是在AButtonItem.h类中声明委托的方式。

#pragma once
#include "BaseItem.h"
#include "ButtonItem.generated.h"

DECLARE_DYNAMIC_MULTICAST_DELEGATE(FButtonItemPressedSignatrue);

UCLASS()
class AButtonItem : public ABaseItem
{
    GENERATED_BODY()

protected:
    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Touch)
    float myMaxButtonPress;

public:

    UPROPERTY(EditAnywhere, Category = Callback)
    FButtonItemPressedSignatrue ButtonItem_OnPressed;
};
Run Code Online (Sandbox Code Playgroud)

然后,按下按钮时将调用委托的广播功能,如下所示:

ButtonItem_OnPressed.Broadcast();
Run Code Online (Sandbox Code Playgroud)

(应该严格调用此函数,因为我有一条调试语句在调用前立即打印。要注意,这在蓝图逻辑中也都可以正常工作。)

这是我尝试向代理注册的地方以及如何声明将被调用的函数:

WeaponMaker.h:

UFUNCTION()
void OnNextBladeButtonPressed();
Run Code Online (Sandbox Code Playgroud)

WeaponMaker.cpp:

void AWeaponMaker::BeginPlay()
{
    Super::BeginPlay();

    TArray<USceneComponent*> weaponMakerComponents;
    this->GetRootComponent()->GetChildrenComponents(true, weaponMakerComponents);

    for (int componentIndex = 0; componentIndex < weaponMakerComponents.Num(); componentIndex++)
    {
        if (weaponMakerComponents[componentIndex]->GetName().Equals("NextBladeButton") == true)
        {
            myNextBladeButton = (AButtonItem*)weaponMakerComponents[componentIndex];
            break;
        }
    }

    if (myNextBladeButton != NULL)
    {
        myNextBladeButton->ButtonItem_OnPressed.AddDynamic(this, &AWeaponMaker::OnNextBladeButtonPressed);
    }

} …
Run Code Online (Sandbox Code Playgroud)

c++ events delegates callback unreal-engine4

6
推荐指数
1
解决办法
711
查看次数

OpenGL转换(glScale,glTranslate等)

我正在学习openGL以及如何进行转换和缩放等转换.我知道你必须经常翻译到原点,然后做你想做的任何事情(比如缩放),然后翻译回来.根据我的理解,这是手动完成的,但你可以用glScale()做同样的事情.

我的问题是,如果我使用glScale函数,我还需要转换为原点吗?

opengl transformation translate scale

4
推荐指数
1
解决办法
4万
查看次数

XNA游戏工作室已于2013年停产?

我不确定如果这是问这个问题的地方,但现在就去了.

我从XNA 2.0开始就一直在XNA中进行游戏编程,我也可以用C++,C#,Java和C编程.我喜欢用它制作游戏,它是一个很好的sdk,但问题是xbox360已经完成了很多工作.

从我所看到的,似乎XNA现在已经过时了,现在我不确定用什么程序来编写游戏.现在我知道"你可以制作自己的引擎,因为你知道OpenGL/Direct X"是的但是这是一大堆工作.

我的问题是下一个游戏引擎是什么,或者你会推荐其他游戏引擎?我知道我在很久以前使用过DarkGDK,但我不知道它是怎么回事.

c# xna game-engine

3
推荐指数
1
解决办法
3399
查看次数

检查类型的变量参数

我在下面有一个用于字符串连接的函数,它接受一组可变长度的参数.我想检查以确保每个元素都是char*.我正在研究使用dymanic_cast但它不能用于char*.我该如何施展arg ?:

char* Concatenate(int numStrings, ...)
{
    vector<char*> stringVectorArray;
    va_list vargList;

    if (numStrings > 0 && numStrings < MAX_STRING_BUFFER_SIZE)
    {
        //Store each of the arguments so we can iterate through them later.
        va_start(vargList, numStrings);
        for (int currIndex = 0; currIndex < numStrings; currIndex++)
        {
            char* item = (char*)(va_arg(vargList, char*));
            if (item == NULL)
            {
                //Error: One of the parameters is not char*.
                va_end(vargList);
                return NULL;
            }
            else
            {
                stringVectorArray.push_back(item);
            }
        }
        va_end(vargList);
    }

    return ConcatenateStrings(stringVectorArray);
}
Run Code Online (Sandbox Code Playgroud)

c++

3
推荐指数
1
解决办法
82
查看次数

C++类定义编译问题

我看了一遍,我找不到任何与我的问题有关的事情.我试图为一个多边形类编写一个类定义,该类基本上有一个包含指向点的指针的向量.当我尝试编译时,我会继续解决以下错误...

错误C2143:语法错误:缺少';' 在'<'错误之前C4430:缺少类型说明符 - 假定为int.错误C2238:';'之前的意外标记 错误C2061:语法错误:标识符'向量'错误C2065:'myPolygonPoints':未声明标识符错误C2065:'points':未声明标识符错误C2065:'myHasInstersection':未声明标识符错误C2660:'Polygon :: addSetOfPoints':函数不拿一个参数

这是该类的代码

#include "Point.h"
#include <vector>

class Point;

class Polygon
{
private:
    vector<Point*> myPolygonPoints;
    bool myHasIntersection;

public:
    void addSetOfPoints(vector<Point*> points)
    {
        myPolygonPoints = points;
    }

    bool getHasIntersection()
    {
        return myHasIntersection;
    }

    void setHasIntersection(bool intersection)
    {
        myHasInstersection = intersection;
    }

};
Run Code Online (Sandbox Code Playgroud)

c++ templates compiler-errors

1
推荐指数
1
解决办法
334
查看次数

在c ++中生成超级随机数

C++ 11引入了允许生成非常随机数的类,它还创建了随机数的均匀分布.还有实现生成种子(用于使随机数生成器更随机的数字).

我试图创建一个在最小和最大之间生成随机数的函数,但我遇到了麻烦.该函数仅生成种子和随机数一次.换句话说,当我调用该函数时,它将继续给我相同的数字.

下面是代码,我尝试生成一堆种子,随机选择其中一个,将该种子用于RNG并最终产生一个随机数.

int Utils::GenerateSuperRandomNum(int min, int max)
{
    //Seed a the RNG
    int randNum;
    int randIndex;
    seed_seq seq{ 1, 2, 3, 4, 5 };
    vector<int> seeds(5 * max);
    uniform_int_distribution<int> rngDistribution(min, max);    //Generates number in the range min to max.

    //Generate our seed numbers.
    seq.generate(seeds.begin(), seeds.end());

    //Generate random index bewteen 0 and size - 1.
    srand(seeds.at(0));
    randIndex = rand() % seeds.size(); 

    //Seed the RNG with a random seed from our vector.
    mt19937 rngGenerator(seeds.at(randIndex)); 

    //Get a random number.
    randNum = …
Run Code Online (Sandbox Code Playgroud)

c++ random vector c++11 random-seed

-5
推荐指数
1
解决办法
987
查看次数