小编inl*_*ine的帖子

一些简单的XNA/HLSL问题

我最近一直在进行HLSL编程,我很好奇我正在做的一些事情是如何工作的.

例如,我在这里有一个非常简单的着色器,可以将任何蓝绿色的像素调整为红色.

sampler2D mySampler;

float4 MyPixelShader(float2 texCoords : TEXCOORD0): COLOR
{
    float4 Color;
    Color = tex2D(mySampler, texCoords.xy);

    if(Color.r == 0 && Color.g == 1.0 && Color.b == 1.0)
    {
        Color.r = 1.0;
        Color.g = 0.5;
        Color.b = 0.5;
    }
    return Color;
}

technique Simple
{
    pass pass1
    {
        PixelShader = compile ps_2_0 MyPixelShader();
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道该tex2D函数在指定的位置抓取像素的颜色,但我不明白的是mySampler甚至有任何数据.我根本没有设置它或传入纹理,但它神奇地包含我的纹理数据.

另外,是什么样的东西之间的区别: COLORCOLOR0TEXCOORDTEXCOORD0

我可以采取合乎逻辑的猜测,并说这COLOR0是装配中的注册表,其中包含GPU中当前使用的像素颜色.(这可能完全错了,我只是陈述我的想法)

如果是这样,这是否意味着指定类似float2 texCoords : TEXCOORD0意志的东西,默认情况下,抓住GPU正在处理的当前位置?

c# shader xna hlsl

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

这是多线程设计的正确用法吗?(C#)

我正在构建一个由服务器和客户端组成的小型聊天程序.服务器保留与其交互的客户端列表.

我在服务器上有两个工作线程.一个处理传入客户端连接.另一个处理传入的客户端消息.

现在,由于两个线程都与名为"clients"的List进行交互,所以我做了类似的事情.

// The clients list looks something like this...
List<TcpClient> clients;

// This is running on one thread.
ConnectionHandler()
{
    while(true)
    {
        // Wait for client to connect, etc. etc.

        // Now, add the client to my clients List.
        lock(clients)clients.Add(myNewClient);
    }
}

// This is running on another thread.
ClientHandler()
{
    while(true)
    {
        lock(clients)
        {
            /*
            This will be handling things like incoming messages
            and clients disconnecting (clients being removed from
            the 'clients' List
            */
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading

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

使用makefile时如何禁用GCC优化?

我刚刚开始学习Linux,我在为我的一个C++项目禁用GCC优化时遇到了一些麻烦.

这个项目是用makefile构建的......

make -j 10 && make install
Run Code Online (Sandbox Code Playgroud)

我已经在各种网站上看到禁用优化的命令是......

gcc -O0 <your code files>
Run Code Online (Sandbox Code Playgroud)

有人可以帮我把它应用到makefile而不是个别代码吗?我一直在寻找几个小时,空手而归.

c++ linux optimization gcc makefile

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

如何将矢量转换为记录?

例如,如果我有:

(defrecord Item [name cost])
Run Code Online (Sandbox Code Playgroud)

我怎么能转换["ball" 10]{:name "ball", :cost 10}

clojure

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

如何将记录列表的键值相加?

例如:

{defrecord Item [cost value]}
{def items [(Item. 20 50)
            (Item. 30 40)
            (Item. 10 70)]
Run Code Online (Sandbox Code Playgroud)

我如何总结物品的成本?(所以我得60)

clojure

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

为什么在Visual Studio 2015中弄乱了花括号缩进?

我正在使用Visual Studio 2015版本候选。

在Visual Studio的早期版本中,我总是同时使用Automatic brace completionAutomatically format completed block on }禁用它们。

在以前的版本中,创建块时,花括号在键入时会自动格式化 enter { enter }

这将导致:

class Foo
{
}
Run Code Online (Sandbox Code Playgroud)

在VS 2015中,结果为:

class Foo
{
    }
Run Code Online (Sandbox Code Playgroud)

是否缺少我的新设置,或者这是RC中的错误?

c# visual-studio-2015

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

我怎样才能恢复Git提交的部分?

我刚刚完成了两个已经分离了很长时间的分支,因此产生了很多冲突.在几天的时间里,解决冲突已经花了我大约16个小时.

现在冲突已经完成,并且合并已经提交,我发现我偶然搞砸了一些冲突.无论如何我是否可以进入提交,并还原或更改它的某些部分?

我更喜欢在Git Extensions中给我解决方案,但如果需要的话,我使用bash没问题.

git git-extensions

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

我如何按值对结构矢量进行排序?

更具体地说:我如何按某个键的值对结构向量进行排序?

例如,如果我有:

(defstruct Item :weight :value :cost
(def my-items [(struct Item 30 50 5)
               (struct Item 15 75 20)
               (struct Item 50 10 35)])
Run Code Online (Sandbox Code Playgroud)

我怎样才能对矢量中的所有项目进行排序,比方说,值?

clojure

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