小编deb*_*air的帖子

克隆git存储库的问题

我试图克隆git存储库,我收到错误

Unable to negotiate with <server>: no matching key exchange method found.
Their offer: diffie-hellman-group1-sha1
fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)

我编辑 ~/.ssh/config并添加了

Host somehost.example.org
KexAlgorithms +diffie-hellman-group1-sha1"
Run Code Online (Sandbox Code Playgroud)

但我仍然得到同样的错误.

其他解决方案是使用该命令,ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 user@127.0.0.1 -p 2222但我也得到连接拒绝端口号22.

我正在使用Windows机器.

git ssh

15
推荐指数
5
解决办法
2万
查看次数

在函数调用期间将哪些值压入堆栈?

我试图通过另一个被调用的函数修改局部变量的值,但我无法弄清楚所有值被推入堆栈的是什么.

#include <stdio.h>
#include <string.h>

void fun()
{
  int i; 
  int *p=&i; 
  int j; 
  for(j=0;*(p+j)!=10;j++);
  printf("%d",j);
  /* Stack Frame size is j int pointers. */ 
  *(p+j)=20; 
}    

main()
{
  int i=10;
  fun();
  printf("\n %d \n",i);
}
Run Code Online (Sandbox Code Playgroud)

究竟如何jfun()等于12?我试图了解什么值被推入堆栈.更具体地说,我们可以imain()不使用for循环的情况下更改其中的值,fun()是否可以预测j内部的值fun()

c pointers

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

kmalloc和kmem_cache_alloc之间的区别

有什么区别kmem_cache_allockmalloc()内核内存分配?哪一个用的?

linux-kernel

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

OpenGL纹理缓冲对象的目的是什么?

我们使用缓冲区对象来减少来自CPU-GPU的复制操作,对于纹理缓冲区对象,我们可以将目标从顶点更改为缓冲区对象中的纹理.这里有纹理缓冲对象的其他优点吗?另外,它不允许过滤,这有什么不利之处吗?

opengl textures opengl-3

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

将网格剪切到用户定义的区域

我正在为网格实现剪切算法,其中剪切区域是规范化空间[-1,1]中的矩形.所以我的算法如下:

  1. 创建要用于剪裁的区域的边界框,这些坐标将在标准化空间中.

  2. 在局部空间中创建网格的边界框.使用MVP矩阵将它们转换为剪辑坐标空间.除以w将它们转换为标准化空间.

    vec4 transformed_coords = MVP * vec4(vertex,1.0);
    transformed_coords.xyz /= transformed_coords.w;
    
    Run Code Online (Sandbox Code Playgroud)
  3. 检查两个矩形是否重叠.仅使用xy坐标.

使用此算法,我得到错误的输出.

model matrix
  1.000000  0.000000  0.000000  0.000000
  0.000000  0.000000 -1.000000  0.000000
  0.000000  1.000000  0.000000  0.000000
  0.000000  0.000000  0.000000  1.000000

view * projection
  0.920664 -0.285565 -0.266194 -0.266141
  0.039495  0.746434 -0.664418 -0.664286
 -0.388354 -0.601072 -0.698633 -0.698493
 -0.063192 -1.194295  0.894055  1.093857

MVP matrix 
  0.920664 -0.285565 -0.266194 -0.266141
  0.388354  0.601072  0.698633  0.698493
  0.039495  0.746434 -0.664418 -0.664286
 -0.063192 -1.194295  0.894055  1.093857

bounding box in object space
  -23.376505 -23.376505 -0.023644
   23.376505 -23.376505 -0.023644 …
Run Code Online (Sandbox Code Playgroud)

opengl 3d

8
推荐指数
0
解决办法
317
查看次数

使用vulkan渲染多个网格的最佳实践

我有多个具有不同纹理/管道构造的网格,例如深度测试/混合函数,以使用vulkan进行渲染.在性能方面呈现它们的最佳实践是什么?

  1. 一个选项是创建n个命令缓冲区,其中n个线程用于n个网格,它们之间没有任何共享,布局,描述符,采样器或任何东西.如果我这样做,我应该使用n个辅助命令缓冲区和1个主要或所有这些将是次要的?

  2. 使用相同的命令缓冲区渲染n个网格,创建n个管道,n个用于制服和顶点数据的缓冲区.开始记录命令缓冲区然后在循环中,调用vkcmdDraw用于具有不同管道,缓冲区的n个网格.我能用这种方法渲染.但我如何使用多线程使其更快?

还是其他方法?

vulkan

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

使用texelFetch()进行纹理处理

当我将非最大值传递到纹理缓冲区时,渲染时会使用最大值的颜色绘制几何体.我在使用glTexBuffer()API时发现了这个问题.

例如,假设我的纹理数据是GLubyte,当我传递任何小于255的值时,颜色与用255绘制的颜色相同,而不是黑色和那种颜色的混合.
我试过AMD和nvidia卡,但结果是一样的.你能告诉我哪里可能出错吗?

我在这里复制我的代码:

垂直着色器:

in vec2 a_position;
uniform float offset_x;
void main()
{ 
   gl_Position = vec4(a_position.x + offset_x, a_position.y, 1.0, 1.0);
}
Run Code Online (Sandbox Code Playgroud)

片段着色器:

out vec4 Color;
uniform isamplerBuffer sampler;
uniform int index;
void main() 
{
   Color=texelFetch(sampler,index);

}
Run Code Online (Sandbox Code Playgroud)

码:

GLubyte arr[]={128,5,250};
glGenBuffers(1,&bufferid);

glBindBuffer(GL_TEXTURE_BUFFER,bufferid);

glBufferData(GL_TEXTURE_BUFFER,sizeof(arr),arr,GL_STATIC_DRAW);
glBindBuffer(GL_TEXTURE_BUFFER,0);

glGenTextures(1, &buffer_texture);   

glBindTexture(GL_TEXTURE_BUFFER, buffer_texture);
glTexBuffer(GL_TEXTURE_BUFFER, GL_R8, bufferid);


glUniform1f(glGetUniformLocation(shader_data.psId,"offset_x"),0.0f);
glUniform1i(glGetUniformLocation(shader_data.psId,"sampler"),0);
glUniform1i(glGetUniformLocation(shader_data.psId,"index"),0);

glGenBuffers(1,&bufferid1);

glBindBuffer(GL_ARRAY_BUFFER,bufferid1);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices4),vertices4,GL_STATIC_DRAW);

attr_vertex = glGetAttribLocation(shader_data.psId, "a_position");

glVertexAttribPointer(attr_vertex, 2 , GL_FLOAT, GL_FALSE ,0, 0);

glEnableVertexAttribArray(attr_vertex);

glDrawArrays(GL_TRIANGLE_FAN,0,4);

glUniform1i(glGetUniformLocation(shader_data.psId,"index"),1);

glVertexAttribPointer(attr_vertex, 2 , GL_FLOAT, GL_FALSE ,0,(void *)(32) ); …
Run Code Online (Sandbox Code Playgroud)

opengl shader textures glsl

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

如何在纹理中使用OpenGL LOD?

如何GL_TEXTURE_MIN_LOD,GL_TEXTURE_MAX_LODLOD_BIAS工作?

为了在视觉上检查,我已经使用mipmapping创建了6*6纹理,并且对于值> 0.5,MIN_LOD我获得了3*3纹理,而不管其值是多少MAX_LOD.如果我改变LOD_BIAS它不会影响我的o/p.我无法弄清楚它是如何工作的.

可以通过陈述一个例子来解释吗?

编辑:我手动创建mipmap级别,以便我可以观察它正在拾取的级别.这是我的代码:

glTexImage2D(target, 0, GL_RGBA,9 ,9, 0, GL_RGBA, GL_BYTE,subpix);
glTexImage2D(target, 1, GL_RGBA,4 ,4, 0, GL_RGBA, GL_BYTE,&subpix[4]);
glTexImage2D(target, 2, GL_RGBA,2 ,2, 0, GL_RGBA, GL_BYTE,&subpix[10]);
glTexImage2D(target, 3, GL_RGBA,1 ,1, 0, GL_RGBA, GL_BYTE,&subpix[18]);
glSamplerParameterf(sampler,GL_TEXTURE_MIN_LOD,0.862);
glSamplerParameterf(sampler,GL_TEXTURE_MAX_LOD,0.99);
glSamplerParameterf(sampler,GL_TEXTURE_LOD_BIAS,0.0);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望它将采用2*2的第二个mipmap级别,但它选择4*4的第一个mipmap级别.当我设置min lod <0.5时,它取0级9*9.并且无论设置为max lod的值如何,都会发生这种情况.

opengl textures texture-mapping

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

如何在opengl中绘制视锥体

我想画一个截头音GL_LINE_STRIP.这些截头体顶点的坐标是什么?我有模型视图和投影矩阵.是否可以使用这些矩阵计算着色器本身的坐标?

opengl 3d projection

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

C++ 用 lambda 初始化变量

#include <iostream>

using namespace std;

int main()
{

    static bool temp([]{ 
        cout <<"Hi ";
        return false;});


   cout <<"temp "<< temp;

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

它不执行 lambda。但是如果我们单独声明 lambda 像:

#include <iostream>

using namespace std;

int main()
{
    auto lambda = []{ 
        cout <<"Hi ";
        return false;};

    static bool temp(lambda());


   cout <<"temp "<< temp;

   return 0;
}

Run Code Online (Sandbox Code Playgroud)

它会执行它。我在这里缺少什么?

c++ lambda initialization

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