鉴于我对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) 我在使用多个统一缓冲区时遇到问题.
这是我的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)
当结构定义如下: …
我正在尝试使用 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) 在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) 我尝试在一个 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)