标签: buffer

获取制服块中制服的名称

所以我问了这个问题:优化均匀传输,并建议使用均匀缓冲区。我做了一些研究并尝试实现它,但在从着色器加载统一块的格式时遇到了问题。在我的项目中,我有一个着色器类,它加载所有制服、顶点属性并将它们存储在着色器中,以便用户可以轻松更改值,而无需再次从着色器查询制服的位置。我正在尝试对统一块执行相同的操作,但我现在不知道如何检索我需要的所有数据。

这是我试图从着色器获取的数据类型:

  1. 统一区块名称
  2. 统一块大小
  3. 统一块索引
  4. 制服区所有制服的名称

我的主要问题是最后一个。例如,这是我的统一块:

uniform MatBlock{
    vec4 MatColor;
    int MatRoughness;
} material;
Run Code Online (Sandbox Code Playgroud)

我希望能够获得制服名称的映射,因此{"MatColor":0, "MatRoughness":16},第二个值是制服的偏移量。这样可以轻松获取和设置偏移量。我的目标是能够做类似的事情uniformbuffer->PushData(0.3f, sizeof(float), "MaterialBlock", "MatRoughness");,所以这会将 UBO 中的 MatRoughness 设置为 0.3。我已经有了获取列表中前 3 项的代码(代码位于下面),但我不知道如何获取名称。

glGetProgramiv(shader, GL_ACTIVE_UNIFORM_BLOCKS, &numblocks);        
for(unsigned int i = 0; i < numblocks; i++){
    // Get the name of the uniform block
    int namelen;
    glGetActiveUniformBlockiv(shader, i, GL_UNIFORM_BLOCK_NAME_LENGTH, &namelen); 
    char blockname[namelen];
    glGetActiveUniformBlockName(shader, i, namelen, NULL, blockname);
                 
    // Add Block Binding
    unsigned int index = glGetUniformBlockIndex(shader, blockname);
    glUniformBlockBinding(shader, index, i);

    // …
Run Code Online (Sandbox Code Playgroud)

c++ opengl buffer glsl

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

不会被优化掉的 Memset 内存

这与这个问题相关:有没有一种方法可以在使用完缓冲区后对其进行内存设置(例如出于安全考虑)而不对其进行优化?

尝试将指针强制转换为易失性指针,收到有关将易失性指针发送到不需要易失性的函数的警告。

c buffer memset

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

C++ cin问题

好的,我正在编写一个简单的C++函数来组合cin'd字符串.我目前正在开发Linux,所以我没有简单的"getline(cin,input)"命令.这是迄今为止的代码:

string getLine()          
{
    string dummy;          
    string retvalue;          
    do
    {
        cin << dummy;
        retvalue += dummy;
    } while           
    return retvalue;          
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是:提示实际上是要求用户输入,还是仍然是因为空间而从剩余的缓冲区中读取?

c++ buffer cin

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

管理缓冲区内的数据

我正在使用此代码将文件读入缓冲区.该文件是满structsevaluacion类型(包括一些charint变量).现在我将整个文件放在缓冲区中,如何在缓冲区中找到一个变量的值?例如buf.notamedia < 4.应该在文件中有很多.

#include <unistd.h>
#include <sys/stat.h>
int revisanotas(int fd)
{
    int nbytes = 1;
    int nbytese = 0;
    evaluacion buf;
    struct stat datos;
    fstat(fd, &datos);

    printf("Size of file =  %d \n", datos.st_size);
    char *buffer = (char *)malloc(datos.st_size);
    int actual = read(fd, buffer, datos.st_size);

    printf("actual = %d\n", actual);

    if (buf.notamedia >= 4.5 && buf.notamedia < 5)
    {
        /* ... */
    }
}
Run Code Online (Sandbox Code Playgroud)

任何想法都非常受欢迎


我正在按照你说的做,但我只进行了一次迭代,我不知道我做错了什么:(

evaluacion* buffer=(evaluacion*)malloc(datos.st_size);
int actual = read(fd,buffer,datos.st_size); …
Run Code Online (Sandbox Code Playgroud)

c buffer file

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

Java BufferedOutputStream策略

您可以为BufferedOutputStream构造函数提供缓冲区大小的int参数.我的szenario我有一个进程写入磁盘和从磁盘读取进程.具有8192字节的默认缓冲区会导致大文件的高度碎片化.

现在我想知道如果我将缓冲区大小提升到1 Mb,是否可以减少碎片.

我认为这应该有效.但BufferedOutputStream如果我总是打电话,他仍然会尊重我的缓冲 BufferedOutputStream.write(smallBuffer,0,i); // i being smaller than 8192

我很小,因为我正在网上捕捉小的paketes(8192字节).但我想要BufferedOutputStream真正缓冲很多,而不是决定先冲洗?

BufferedOutputStream "愚蠢的",足以等到缓冲区已满或者flush()被调用.或者它安装了一些基于时间的冲洗机制?

java buffer process disk stream

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

glStencilFunc因某些原因无法工作:(

无论我尝试了什么,粒子都会在地球外部呈现而不会触及地球内部,我想要反过来!无论我改变了什么参数(尝试了2个小时),它的任何一个粒子都会在外面变细但在里面没有,或者在外部和内部都是粒子.我对此感到非常头疼,有人可以帮我解决这个问题.我使用1位用于模板缓冲器.GDEbugger显示模板缓冲区工作正常.

glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_NEVER, 1, 1);
glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
globe->Use();
globe->SetWVP(&WVP, true);
Render(globe.obj");
glDisable(GL_STENCIL_TEST);

glStencilFunc(GL_EQUAL, 1, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);

RenderParticlesUsingTransformFeedback();
Run Code Online (Sandbox Code Playgroud)

opengl buffer stencil-buffer

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

为什么Outputstream = new BufferedOutputStream没有缓冲?

从这个例子 我学到了

OutputStream out = = new BufferedOutputStream(new FileOutputStream(file));
Run Code Online (Sandbox Code Playgroud)

没有缓冲!为什么?

java io buffer

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

在C中,每次使用scanf摆脱缓冲区时,我都应该使用FLUSH吗?

正如标题所说,我应该使用

while(getchar() != '\n'); 
Run Code Online (Sandbox Code Playgroud)

每次我使用scanf?有人可以解释背后的逻辑

while(getchar() != '\n');
Run Code Online (Sandbox Code Playgroud)

谢谢.

c buffer scanf while-loop

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

从方法返回中填充缓冲区失败... ANSI C

我所拥有的代码在一个方法中非常简单:

// This line has an Intellisense Error: Initialization with {...} expected for aggregate object
char str[] = GetBuffer(); // x 64 will give us 512 (sector sized buffer) ;
Run Code Online (Sandbox Code Playgroud)

GetBuffer metod是这样的:

char * GetBuffer(void)
{
int idx = 0;
int offset = 0;
char *buffer[512];

for(idx =0; idx < 64; idx ++)
{
            // This line has an Itellisense Error: "Expected Expression"
    buffer[offset + idx] = {"E","R","A","S","E","D"," ", " "};

    offset += 8;
}

return *buffer;
}
Run Code Online (Sandbox Code Playgroud)

有什么想法这有什么不对吗?所有我想做的 - …

c buffer ansi

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

在缓冲区Node.js中写入位

朋友,我该如何向Node js Buffer中写入一些位,我可以写入Byte,整数等,但不知道如何写入位。可能吗?如果是,那怎么办?我应该在缓冲区1或0中写一个bollean,然后使用readBit()在API中读取它,这就是为什么我需要在缓冲区中写一点。

buffer byte bit node.js

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

标签 统计

buffer ×10

c ×4

c++ ×2

java ×2

opengl ×2

ansi ×1

bit ×1

byte ×1

cin ×1

disk ×1

file ×1

glsl ×1

io ×1

memset ×1

node.js ×1

process ×1

scanf ×1

stencil-buffer ×1

stream ×1

while-loop ×1