我正在使用虚幻引擎4 VR内容示例,它有一个可以绘制的白板.它使用渲染目标将线条渲染到画布.
问题是,当我将白板复制到级别中的其他位置时,它会显示相同的图形,如下所示:
这是我使用的材料和纹理:
我尝试制作材料和纹理的副本并在其中一个白板上使用它,但结果相同.我不确定为什么渲染目标没有实例/唯一?为什么它在白板的多个实例上绘制相同的东西?
编辑(附加详细信息):我制作了原始渲染目标的副本,并尝试指定相反,我还制作了原始的材质实例,并为复制指定了但仍然是同一个问题.我试图动态创建一个渲染目标和材质实例,你可以在这里看到https://answers.unrealengine.com/questions/828892/drawing-on-one-whiteboard-render-target-is-copied.html,但是我无法借鉴它; 所以我只对其中两个做了它,它仍然有同样的问题
我一直在努力将一些蓝图逻辑转换为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) 我正在学习openGL以及如何进行转换和缩放等转换.我知道你必须经常翻译到原点,然后做你想做的任何事情(比如缩放),然后翻译回来.根据我的理解,这是手动完成的,但你可以用glScale()做同样的事情.
我的问题是,如果我使用glScale函数,我还需要转换为原点吗?
我不确定如果这是问这个问题的地方,但现在就去了.
我从XNA 2.0开始就一直在XNA中进行游戏编程,我也可以用C++,C#,Java和C编程.我喜欢用它制作游戏,它是一个很好的sdk,但问题是xbox360已经完成了很多工作.
从我所看到的,似乎XNA现在已经过时了,现在我不确定用什么程序来编写游戏.现在我知道"你可以制作自己的引擎,因为你知道OpenGL/Direct X"是的但是这是一大堆工作.
我的问题是下一个游戏引擎是什么,或者你会推荐其他游戏引擎?我知道我在很久以前使用过DarkGDK,但我不知道它是怎么回事.
我在下面有一个用于字符串连接的函数,它接受一组可变长度的参数.我想检查以确保每个元素都是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) 我看了一遍,我找不到任何与我的问题有关的事情.我试图为一个多边形类编写一个类定义,该类基本上有一个包含指向点的指针的向量.当我尝试编译时,我会继续解决以下错误...
错误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++ 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)