小编aCu*_*ria的帖子

文件IO,处理CRLF

我正在编写一个程序,它接收一个文件并将其拆分为多个用户指定大小的小文件,然后再次加入多个小文件.

  1. 代码必须适用于C和C++

  2. 我正在编译多个编译器.

  3. 我正在使用函数fread()和文件读取和写入文件fwrite()

  4. fread()fwrite()处理字节,而不是字符串.

我遇到的问题与CRLF有关.如果我正在读取的文件包含CRLF,那么当我拆分并将文件重新连接在一起时,我想保留它.如果文件包含LF,那么我想保留LF.

不幸的是,fread()似乎将CRLF存储为\n(我认为),并且编写的任何内容都fwrite()依赖于编译器.

我该如何处理这个问题?

c c++

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

将深度渲染缓冲区复制到深度缓冲区

目前我正在使用附加的深度渲染缓冲区向FBO渲染一些东西.

但是,在完成渲染缓冲区后,深度信息几乎丢失了.

如何将数据从渲染缓冲区复制到固定功能深度缓冲区?

c++ opengl glsl

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

在OpenGL中快速文本呈现

我想知道如何在OpenGL中快速渲染文本.

目前,我正在读取一个真正的字体,并为每种使用的字体动态生成包含所有ASCII字符的纹理.每个纹理只生成一次并保留供以后使用.

在绘制阶段,我逐行绘制所有内容.

我在内存上有一个静态数组,计算字距,修改线的顶点位置和纹理坐标.然后我绑定相应的纹理并渲染线.

不幸的是,这似乎很慢.有没有更好的办法?

c++ opengl glsl

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

为什么我不能将unique_ptr与函数返回的unique_ptr交换?

以下代码将发出警告:

警告C4239:使用非标准扩展名:'argument':从'std :: unique_ptr <_Ty>'转换为'std :: unique_ptr <_Ty>&'

std::unique_ptr<T> foo() { return std::unique_ptr<T>( new T ); }
std::unique_ptr<T> myVar;
myVar.swap(foo());
Run Code Online (Sandbox Code Playgroud)

我想知道处理这种情况的正确方法是什么.

c++ unique-ptr visual-studio-2012

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

使用Visual Studio 2012时,Xinput无法在Windows 7上运行

从VS2010迁移到VS2012后,Xinput已停止在Windows 7上运行.

我得到以下缺少的dll:

  • XINPUT1_4.DLL
  • API-MS-双赢三项赛 - classicprovider-l1-1-0.dll

请注意,一切都在Windows 8上按预期工作.

我该如何解决这个问题?

sdl visual-c++ windows-7 visual-studio-2012

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

让VBO工作

我有问题让OpenGL工作,基本上我得到了替代的黑色和灰色屏幕.我使用固定功能管道(glBegin(),glEnd()和glTexCoord)工作正常...我认为我做的事情非常错误,这个东西很新.任何帮助,将不胜感激.

struct Quad
{
    float x0, y0, z0;   // top left corner
    float x1, y1, z1;   // top right corner
    float x2, y2, z2;   // bottom left corner
    float x3, y3, z3;   // bottom right corner
    float s0, t0;
    float s1, t1;
    float s2, t2;
    float s3, t3;
    char r, g, b, a;    // tint
    float depth;        // depth value of the Quad
};

void draw{
    glEnable(GL_TEXTURE_2D);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    // Note: glVertexPointer is deprecated, change to glVertexAttribPointer
    glVertexPointer(3, GL_FLOAT, sizeof(Quad), …
Run Code Online (Sandbox Code Playgroud)

c++ opengl visual-studio-2010

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

在OpenGL上下文丢失后必须做什么?

考虑这个问题的好方法是什么?手柄丢失了吗?

glCreateProgram()?glCreateShader()?glGenTextures()?glGenBuffers()?

我想知道我是否正在做必要的事情(或做太多和泄漏记忆)

opengl sdl visual-c++

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

意外的模板扣除

template< typename T >
void addVarCB(const std::string &name,
              TwSetVarCallback setCallback, TwGetVarCallback getCallback,
              void * clientData, const std::string &def = "" );

template< class C, typename T >
void addVarCB(const std::string &name,
              C * _this, T(C::*getter)(void), const std::string &def = "");
Run Code Online (Sandbox Code Playgroud)

以下代码将在运行时编译并崩溃:

bar_->addVarCB<MyClass, unsigned>("foo", this, &MyClass::MyClassFn, nullptr);
Run Code Online (Sandbox Code Playgroud)

我实际上期望它根本不会编译,因为没有函数将其参数作为参数!(注意"MyClass,unsigned"是不必要的,但要清楚......)

c++ templates

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

是否可以强制模板函数只接受某种数字类型的参数?

例如

template <typename T>
T foo(){ ... }
Run Code Online (Sandbox Code Playgroud)

其中T只能是浮点类型,即float/double/long double

c++

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

为什么nvcc失败允许将类型为T*的指针强制转换为void*?

随着以下琐碎的删除

struct CudaDeleter{ void operator()(void * ptr) { cudaFree( ptr ); } };
Run Code Online (Sandbox Code Playgroud)

在使用nvcc编译的代码中使用删除器时出现以下错误.相同的删除程序与vs2012编译器一起工作正常

warning : "std::unique_ptr<_Ty, _Dx>::unique_ptr(
const std::unique_ptr<_Ty, _Dx>::_Myt &)
[with _Ty=const int, _Dx=cuda::CudaDeleter]"

error : function "cuda::CudaDeleter::operator()"
cannot be called with the given argument list

warning : "std::unique_ptr<_Ty, _Dx>::unique_ptr(
const std::unique_ptr<_Ty, _Dx>::_Myt &)
[with _Ty=float, _Dx=cuda::CudaDeleter]"
Run Code Online (Sandbox Code Playgroud)

@talonmies:智能指针仅使用此功能构建

template <typename T>
std::unique_ptr<T, CudaDeleter> make_unique(size_t size)
{
    void * pMemory = nullptr;
    check( cudaMalloc(&pMemory, size) );
    return std::unique_ptr<T, CudaDeleter>( static_cast<T*>(pMemory) );
}
Run Code Online (Sandbox Code Playgroud)

cuda nvcc

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