有没有办法在optix中声明动态大小的数组有效负载?我用Google搜索并阅读了Optix文档,但却发现Optix不允许使用malloc.我有什么方法可以做以下的事情吗?
struct PerRayData_radiance
{
float3 result;
float importance;
int depth;
float stuff[N];
};
Run Code Online (Sandbox Code Playgroud)
我根据一些用户参数将数组大小调整为N大小.
我尝试在NVIDIA论坛上搜索过去的问题,但由于某些安全问题,它似乎已被关闭.
我想在QGLWidget中显示OptixSDK的sample6.
我的应用程序只有3个QSlider围绕X,Y,Z轴和QGLWidget旋转.
根据我的理解,每当我的QSlider或Mouseevents 调用updateGL()时,都会调用paintGL().然后我初始化一个旋转矩阵并将此矩阵应用于PinholeCamera,以便用新变换的cameracoordinates追踪场景,对吧?
跟踪完成后,我得到outputbuffer并使用glDrawPixels()绘制像素,就像在OptiX框架中给出的GLUTdisplay.cpp一样.
但我的问题是图像偏斜/扭曲.例如,我想要显示一个球,但球是极端的,但旋转工作正常.当我缩小时,图像似乎在水平方向上比在垂直方向上缩放得慢得多.
我几乎可以肯定/希望它必须对gl ......()函数做一些没有正确使用的东西.我错过了什么?有人可以帮我吗?
为了完整性,我发布了paintGL()和updateGL()代码.
void MyGLWidget::initializeGL()
{
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
m_scene = new MeshViewer();
m_scene->setMesh( (std::string( sutilSamplesDir() ) + "/ball.obj").c_str());
int buffer_width, buffer_height;
// Set up scene
SampleScene::InitialCameraData initial_camera_data;
m_scene->setUseVBOBuffer( false );
m_scene->initScene( initial_camera_data );
int m_initial_window_width = 400;
int m_initial_window_height = 400;
if( m_initial_window_width > 0 && m_initial_window_height > 0)
m_scene->resize( m_initial_window_width, m_initial_window_height );
// Initialize camera according to scene params
m_camera = …Run Code Online (Sandbox Code Playgroud) 我正在 Optix 使用 Visual studio 2013 平台工作,我已经工作了一个多月了,突然我得到了这个错误,“memcpy.asm not found”。
我在 Visual Studio 文件夹中找到了这个文件,但它显示“源文件与构建模块时不同”
我想知道是否可以编写一个在我的程序 Cuda / Optix 中计算的变量的文本文件。那是变量在我的 .cu 文件中,因此 CPU 无法写入。
我尝试将开放资产导入库(读取各种 3D 模型文件类型)的多功能性与 NVidia Optix 光线追踪相结合来渲染模型。
到目前为止,只要我渲染的模型由单个网格组成,它就可以工作。当我尝试渲染具有多个网格的文件时,我只得到部分结果。我无法缩小问题所在,寻找一些见解。相关代码在这里:
使用 assimp 导入器加载文件并创建 optix 缓冲区:
int loadAsset(const char* path)
{
Assimp::Importer importer;
scene = importer.ReadFile(
path,
aiProcess_Triangulate
//| aiProcess_JoinIdenticalVertices
| aiProcess_SortByPType
| aiProcess_ValidateDataStructure
| aiProcess_SplitLargeMeshes
| aiProcess_FixInfacingNormals
);
if (scene) {
getBoundingBox(&scene_min, &scene_max);
scene_center.x = (scene_min.x + scene_max.x) / 2.0f;
scene_center.y = (scene_min.y + scene_max.y) / 2.0f;
scene_center.z = (scene_min.z + scene_max.z) / 2.0f;
float3 optixMin = { scene_min.x, scene_min.y, scene_min.z };
float3 optixMax = { scene_max.x, scene_max.y, scene_max.z };
aabb.set(optixMin, optixMax);
unsigned …Run Code Online (Sandbox Code Playgroud) 我有一个包含"原始"BGRA纹理的缓冲区,每种颜色一个字节.线条顺序相反(纹理颠倒).
BGRA缓冲区全部为绿色(0,255,0,255).
我需要将其转换为RGBA并翻转纹理线.我试过这个:
// bgra is an unsigned char*
int width = 1366;
int height = 768;
unsigned char* rgba = new unsigned char[width * height * 4];
for(int y = height - 1; y >= 0; y--)
{
for(int x = 0; x < width; x++)
{
rgba[(x * y * 4)] = bgra[(x * y * 4) + 2];
rgba[(x * y * 4) + 1] = bgra[(x * y * 4) + 1];
rgba[(x * y * …Run Code Online (Sandbox Code Playgroud)