小编toe*_*itz的帖子

Xmonad切换全屏/ xmobar

鉴于我对Haskell的有限(零)知识,xmonad.hs可能具有挑战性.

我正在寻找如何修改我的配置文件以允许使用例如VLC观看视频的"真实"全屏.

我目前的xmonad.hs:

    import XMonad
    import XMonad.Hooks.DynamicLog
    import XMonad.Hooks.ManageDocks
    import XMonad.Util.Run(spawnPipe)
    import XMonad.Util.EZConfig(additionalKeys)
    import Graphics.X11.ExtraTypes.XF86
    import System.IO

main = do
    xmproc <- spawnPipe "xmobar /home/user/.xmobarrc"
    xmonad $ defaultConfig
        { terminal = "urxvt",
          manageHook = manageDocks <+> manageHook defaultConfig
        , layoutHook = avoidStruts  $  layoutHook defaultConfig
        , logHook = dynamicLogWithPP xmobarPP
                        { ppOutput = hPutStrLn xmproc
                        , ppTitle = xmobarColor "green" "" . shorten 50
                        }
        } `additionalKeys`
                [ ((0 , xF86XK_AudioLowerVolume), spawn "amixer set Master on && amixer set Headphone …
Run Code Online (Sandbox Code Playgroud)

haskell xmonad xmobar

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

多个GLSL统一缓冲区

我在使用多个统一缓冲区时遇到问题.

这是我的GLSL代码:

layout(std140) uniform MaterialInfo {
    vec3 Ka;
    vec3 Ks;    
    vec3 Kd;
};


layout(std140) uniform LightInfo {
    vec3 La;
    vec3 Ls;
    vec3 Ld;
};
Run Code Online (Sandbox Code Playgroud)

这就是我创建和填充缓冲区的方式:

    blockIndex = glGetUniformBlockIndex(program, "MaterialInfo");
    if (blockIndex == -1) {
        fprintf(stderr, "Could not bind uniform block\n");
    }
    glGenBuffers(1, &materialUbo);
    glBindBuffer(GL_UNIFORM_BUFFER, materialUbo);
    glBufferData(GL_UNIFORM_BUFFER, sizeof(MaterialBlock), &mesh->material, GL_DYNAMIC_DRAW);
    glBindBufferBase(GL_UNIFORM_BUFFER, blockIndex, materialUbo);


    blockIndex = glGetUniformBlockIndex(program, "LightInfo");
    if (blockIndex == -1) {
        fprintf(stderr, "Could not bind uniform block\n");
    }
    glGenBuffers(1, &lightUbo);
    glBindBuffer(GL_UNIFORM_BUFFER, lightUbo);
    glBufferData(GL_UNIFORM_BUFFER, sizeof(LightBlock), &light->lightBlock, GL_DYNAMIC_DRAW);
    glBindBufferBase(GL_UNIFORM_BUFFER, blockIndex, lightUbo);
Run Code Online (Sandbox Code Playgroud)

当结构定义如下: …

c++ opengl glsl

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

用一个简单的例子测试 Haskell 的可遍历性

我正在尝试使用 Data.Traversable 在 haskell 中遍历数据结构的所有成员,该数据记录在以下网址中:

http://hackage.haskell.org/package/base-4.6.0.1/docs/Data-Traversable.html http://www.haskell.org/haskellwiki/Foldable_and_Traversable

到目前为止,我已经提出了以下代码,据我所知,它缺少 Tr.Traversable 实例化的正确实现。

import qualified Data.Traversable as Tr
import qualified Data.Foldable as Fl
import Control.Monad
import Control.Applicative

data Test = Test { desc  :: String
                 , value :: Int
} 

data Data t = Data { foo :: t 
                   , bar :: t       
} 

exampleData = Data { foo = Test "Foo" 1 
                   , bar = Test "Bar" 2
}

instance Show Test where
  show f = (desc f) ++ ": " ++ …
Run Code Online (Sandbox Code Playgroud)

haskell functor traversable

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

std :: thread,类构造函数和析构函数

在C++ 11中测试线程时,我创建了以下示例:

#include <iostream>
#include <thread>

class Foo {
public:
    Foo(void) {
        std::cout << "Constructor called: " << this << std::endl;
    }
    ~Foo(void) {
        std::cout << "Destructor called: " << this << std::endl;
    }
    void operator()() const {
        std::cout << "Operatior called: " << this << std::endl;
    }
};

void test_normal(void) {
    std::cout << "====> Standard example:" << std::endl;
    Foo f;
}

void test_thread(void) {
    std::cout << "====> Thread example:" << std::endl;
    Foo f;
    std::thread t(f);
    t.detach();
}


int main(int …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading c++11 stdthread

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

GLSL,多个统一块

我尝试在一个 GLSL 着色器中使用多个统一块,并使用以下代码调试我的着色器以打印可用的统一块:

void printUniformBlocks(void)
{
    GLint numBlocks;
    GLint nameLen;

    vector<string> nameList;

    glGetProgramiv(this->program, GL_ACTIVE_UNIFORM_BLOCKS, &numBlocks);
    nameList.reserve(numBlocks);

    cout << "found " << numBlocks << " block in shader" << endl;

    for (int blockIx = 0; blockIx < numBlocks; blockIx++) {
        glGetActiveUniformBlockiv(this->program, blockIx, GL_UNIFORM_BLOCK_NAME_LENGTH, &nameLen);

        vector<GLchar> name; 
        name.resize(nameLen);
        glGetActiveUniformBlockName(this->program, blockIx, nameLen, NULL, &name[0]);

        nameList.push_back(std::string());
        nameList.back().assign(name.begin(), name.end() - 1); //Remove the null terminator.

    }

    for (unsigned int il = 0; il < nameList.size(); il++) {
        cout << "Block name: " << nameList[il] << …
Run Code Online (Sandbox Code Playgroud)

opengl glsl

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