小编PEC*_*PEC的帖子

Visual Studio不推荐使用Opencl函数

我使用本教程开始使用VS中的opencl:

https://opencl.codeplex.com/wikipage?title=OpenCL%20Tutorials%20-%201

我在设置主程序时遇到问题.这是到目前为止的代码:

const char* clewErrorString(cl_int error) {
    //stuff
}

int main(int argc, char **argv) {


    cl_int errcode_ret;
    cl_uint num_entries;


    // Platform

    cl_platform_id platforms;
    cl_uint num_platforms;
    num_entries = 1;

    cout << "Getting platform id..." << endl;
    errcode_ret = clGetPlatformIDs(num_entries, &platforms, &num_platforms);
    if (errcode_ret != CL_SUCCESS) {
        cout << "Error getting platform id: " << clewErrorString(errcode_ret) << endl;
        exit(errcode_ret);
    }
    cout << "Success!" << endl;


    // Device

    cl_device_type device_type = CL_DEVICE_TYPE_GPU;
    num_entries = 1;
    cl_device_id devices;
    cl_uint num_devices;

    cout << "Getting …
Run Code Online (Sandbox Code Playgroud)

compiler-errors deprecated opencl visual-studio-2013

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

光线追踪 - 折射bug

我正在写一个光线追踪器.到目前为止,我有漫反射,Blinn照明和反射.我的折射出了点问题,我不知道是什么.我希望有人可以帮助我. 在此输入图像描述

我有一个大的红色漫射+ Blinn球体和一个折射指数n = 1.5的小折射球体.

小的只是搞砸了.

相关代码:

ReflectiveSurface::ReflectiveSurface(const Color& _n, const Color& _k) : 
F0(Color(((_n - 1)*(_n - 1) + _k * _k) / ((_n + 1)*(_n + 1) + _k * _k))) {}

Color ReflectiveSurface::F(const Point& N, const Point& V) const {
    float cosa = fabs(N * V);
    return F0 + (F0 * (-1) + 1) * pow(1 - cosa, 5);
}

Color ReflectiveSurface::getColor(const Incidence& incidence, const Scene& scene, int traceDepth) const {
    Point reflectedDir = reflect(incidence.normal, incidence.direction);
    Ray …
Run Code Online (Sandbox Code Playgroud)

c++ graphics raytracing

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

C++ 复制省略字段

我试图让复制省略来处理要返回的对象的字段。

示例代码:

#include <iostream>

struct A {
    bool x;
    A(bool x) : x(x) {
        std::cout << "A constructed" << std::endl;
    }
    A(const A &other) : x(other.x) {
        std::cout << "A copied" << std::endl;
    }
    A(A &&other) : x(other.x) {
        std::cout << "A moved" << std::endl;
    }
    A &operator=(const A &other) {
        std::cout << "A reassigned" << std::endl;
        if (this != &other) {
            x = other.x;
        }
        return *this;
    }
};

struct B {
    A a;
    B(const A &a) : a(a) …
Run Code Online (Sandbox Code Playgroud)

c++ in-place copy-elision c++17

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