小编use*_*743的帖子

如何删除ssh密钥?

我目前在服务器上上传了一个旧的SSH密钥.问题是我丢失了我的~/.ssh目录(原始文件id_rsaid_rsa.pub文件).

因此,我想直接在服务器上删除旧的SSH密钥并上传新的密钥.

我尝试了以下命令但没有成功:

$> ssh-add -D
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有没有办法完全删除SSH密钥?

git ssh git-svn ssh-keys ssh-keygen

121
推荐指数
6
解决办法
30万
查看次数

使用GLSL,多灯阴影映射无法正常工作

我已经实现了基本的阴影映射算法,但只使用一个灯就能正常工作.

我想渲染一个带有以下两个点光源的场景:

  • Light_1 - 位置:vec3(-8.0f,5.0f,8.0f),方向:vec3(1.3f,-1.0f,-1.0f)
  • Light_2 - 位置:vec3(8.0f,5.0f,8.0f),方向:vec3(1.3f,-1.0f,-1.0f)

如果我单独渲染两个灯,我会得到以下结果:

使用Light_1渲染:

在此输入图像描述

使用Light_2渲染:

在此输入图像描述

但两者合起来看起来像这样:

在此输入图像描述

正如您所看到的,第一个阴影似乎正确渲染,但它低于light_2的阴影,这是不正确的.总结一下情况,我的盒子纹理与纹理单元0绑定.阴影深度纹理从纹理单元1绑定,如果有多个深度纹理(所以至少有两个ligths,如这个例子),绑定到纹理单元1 + 1(GL_TEXTURE1 + 1).这是代表我所说的代码:

for (int idy = 0; idy < this->m_pScene->getLightList().size(); idy++)

[...]

Light *light = this->m_pScene->getLightList()[idy];
FrameBuffer *frameBuffer = light->getFrameBuffer();

glActiveTexture(GL_TEXTURE1 + idy);
glBindTexture(GL_TEXTURE_2D, frameBuffer->getTexture()->getTextureId()); //To unbind

shaderProgram->setUniform(std::string("ShadowMatrix[").append(Convertor::toString<int>       (idy)).append("]").c_str(), this->m_pScene->getLightList()[idy]->getBiasViewPerspectiveMatrix() * modelMatrix);
                    shaderProgram->setUniform(std::string("ShadowMap[").append(Convertor::toString<int>(idy)).append("]").c_str(), (int)idy + 1);
Run Code Online (Sandbox Code Playgroud)

在我们的案例中它对应于:

shaderProgram->setUniform("ShadowMatrix[0]", <shadow_matrix_light_1>);
shaderProgram->setUniform("ShadowMap[0]", 1); (GL_TEXTURE1)
shaderProgram->setUniform("ShadowMatrix[1]", <shadow_matrix_light_2>);
shaderProgram->setUniform("ShadowMap[1]", 2); (GL_TEXTURE2)
Run Code Online (Sandbox Code Playgroud)

顶点着色器如下(仅适用于2个灯光):

#version 400

#define MAX_SHADOW_MATRIX 10
#define MAX_SHADOW_COORDS 10

layout (location = 0) in vec4 VertexPosition;
layout (location …
Run Code Online (Sandbox Code Playgroud)

opengl glsl shadow opengl-3 shadow-mapping

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

哪个框架最适合使用数据库连接开发移动应用程序?

我使用PHP5开发了一个网站.现在,我想在跨平台移动应用程序中总结我的网站的主要功能.

我做了一些关于可以做到这一点的框架的研究.我发现'jQuery Mobile','SenchaTouch'和'Cordova'是最受欢迎的.但我想开发一个应用程序,它需要连接到数据库,并且可以在iOS和Android上移植(至少).

我尝试了'jQuery Mobile'但是应用程序需要在Web浏览器中打开才能显示应用程序(就像一个简单的网站).例如,我想打开我的应用程序,就像当前的手机应用程序,而不通过使用数据库连接的Web浏览器(具有与当前网站相同的行为,并显示MySQL请求的内容,但没有Web浏览器).

是否可以使用jQuery Mobile或其他?或者我必须通过网络浏览器?有人可以帮帮我吗?

mobile mobile-application sencha-touch jquery-mobile cordova

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

使用OpenGL/GLSL的HDR Bloom效果渲染管道

我已经使用OpenGL和GLSL集成了bloom HDR渲染......至少我认为!我不确定结果.

我按照英特尔网站的教程:

https://software.intel.com/en-us/articles/compute-shader-hdr-and-bloom
Run Code Online (Sandbox Code Playgroud)

关于高斯模糊效果,我严格遵循以下网站上有关性能的所有建议:

https://software.intel.com/en-us/blogs/2014/07/15/an-investigation-of-fast-real-time-gpu-based-image-blur-algorithms
Run Code Online (Sandbox Code Playgroud)

根据第一个网站:

"然后将明亮的通过输出缩小了4倍.每个缩小的亮通输出都用可分离的高斯滤波器模糊,然后加到下一个更高分辨率的亮通输出.最终输出是1/4大小的绽放,向上采样并在色调映射之前添加到HDR输出."

这是bloom流水线(上面的图片来自NSight NVIDIA Debugger).

我测试中窗口的分辨率是1024x720(对于这种算法的需要,这个分辨率将缩小4倍).

步骤1:

照明传递(材质传递+阴影蒙版传递+天空盒传递的混合):

在此输入图像描述

第2步:

将高光信息提取到明亮的通道中(准确地说,生成4个mipmaps纹理("亮通过输出然后缩小半个4倍" - > 1/2,1/4,1/8最后1/2 )):

在此输入图像描述

第3步:

"每个缩小的明亮通道输出都用可分离的高斯滤波器模糊,然后加到下一个更高分辨率的亮通输出."

我想确切地说,双线性过滤是启用的(GL_LINEAR),上面图片中的pexilization是将纹理大小调整到NSight调试器窗口(1024x720)的结果.

a)第1/16x1/16号决议(64x45)

"1/16x1/16模糊输出"

在此输入图像描述

b)第1/8x1/8号决议(128x90)

"1/8x1/8缩小亮度通道,结合1/16x1/16模糊输出"

在此输入图像描述

"1/8x1/8模糊输出"

在此输入图像描述

c)第1/4x1/4号决议(256x180)

"1/4x1/4缩小亮度通道,结合1/8x1/8模糊输出"

在此输入图像描述

"1/4x1/4模糊输出"

在此输入图像描述

d)第1/2x1/2号决议(512x360)

"1/2x1/2缩小亮度通道,结合1/4x1/4模糊输出"

在此输入图像描述

"1/2x1/2模糊输出"

在此输入图像描述

为了达到所需的mipmap级别,我使用了FBO调整大小(但也许在初始化时使用已经调整大小的FBO会更聪明,而不是多次调整相同的大小.你怎么看待这个想法?).

第4步:

色调映射渲染过程:

在此输入图像描述

在此之前,我想对我的工作提出外部建议.它是否正确?我不太确定第3步(降尺度和模糊部分)的结果.

我认为模糊效果不是很明显!但是我使用卷积内核35x35(我认为这就足够:)).

但我真的对一篇关于pdf的文章很感兴趣.这是bloom管道的演示文稿(演示文稿与我应用的演示文稿非常相似).

在此输入图像描述

链接:

https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCMQFjAA&url=https%3A%2F%2Ftransporter-game.googlecode.com%2Ffiles%2FRealtimeHDRImageBasedLighting. PDF&EI = buBhVcLmA8jaUYiSgLgK&USG = AFQjCNFfbP9L7iEiGT6gQNW6dB2JFVcTmA&BVM = bv.93990622,d.d24

正如你在图片中看到的那样,模糊出血效果比我强得多!你认为作者使用几个卷积内核(更高的分辨率)吗?

我不明白的第一件事是高斯模糊算法如何在第三张图片上显示出与白色(灰度值)不同的其他颜色.我仔细观察(高变焦)到明亮的画面(第二个),所有的像素似乎接近白色或白色(灰度).有一件事是肯定的:明亮的纹理上没有蓝色或橙色像素.那么我们如何解释从图2到图3的这种转变呢?这对我来说很奇怪.

我不明白的第二件事是图片3,4,5和6之间的模糊出血效果差异很大!在我的演示中,我使用35x35卷积内核,最终结果接近第三张图片.

你怎么解释这种差异?

PS:请注意,我使用GL_HALF_FLOAT和GL_RGBA16F像素内部格式初始化bloom渲染通道纹理(所有其他渲染通道初始化为GL_RGBA和GL_FLOAT数据类型).

我的程序有问题吗?

非常感谢您的帮助!

opengl shader glsl

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

使用VBO进行纹理绑定无法正常工作

我的程序的目的是显示2个具有2种不同纹理的四边形.问题是加载的最旧纹理是在两个四边形上设置的(仅限texQuadB).我尝试用texQuadA和texQuadB替换buf [3]的两个调用,但它不起作用.我找不到用特定VBO绑定纹理的正确方法.

#define OFFSET_BUFFER(bytes) ((GLfloat *)NULL + bytes)

GLfloat verticesQuadA[12] =
{
    -1.0f, 0.0f, 1.0f,
    -1.0f, 1.0f, 1.0f,
    0.0f, 1.0f, 1.0f,
    0.0f, 0.0f, 1.0f,
};

GLfloat verticesQuadB[12] =
{
    0.0f, 0.0f, 1.0f,
    0.0f, 1.0f, 1.0f,
    1.0f, 1.0f, 1.0f,
    1.0f, 0.0f, 1.0f,
};

GLfloat colors[12] =
{
    1.0f, 0.0f, 0.0f,
    0.0f, 1.0f, 0.0f,
    0.0f, 0.0f, 1.0f,
    1.0f, 0.0f, 1.0f,
};

GLfloat texture[8] =
{
    0.0f, 0.0f,
    1.0f, 0.0f,
    1.0f, 1.0f,
    0.0f, 1.0f
};

int main(int argc, char *argv[])
{
    SDL_Init(SDL_INIT_VIDEO);
    SDL_WM_SetCaption("Texture …
Run Code Online (Sandbox Code Playgroud)

opengl binding textures vbo

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

Spring JSON直接自引用导致循环(无限递归)

我正在使用 Spring Framework 和 Hibernate 编写一个简单的 Spring MVC REST Web 服务。

\n\n

我想序列化以下简单的用户实体:

\n\n

伪代码:

\n\n
@Entity\npublic class UserEntity implements Serializable\n{\n   @Id\n   @GeneratedValue(\n       strategy = GenerationType.IDENTITY)\n   @JsonView(Views.BaseView.class)\n   @JsonProperty(value = "id")\n   @Column(name = "id_user")\n   private Integer id;\n\n   @JsonView(Views.UserView.class)\n   @JsonProperty(value = "login")\n   @Column(name = "login")\n   private String login;\n\n   @JsonView(Views.UserView.class)\n   @JsonProperty(value = "password")\n   @Column(name = "password")\n   private String password;\n\n   @JsonView(Views.UserView.class)\n   @JsonProperty(value = "creator")\n   @ManyToOne(fetch = FetchType.LAZY)\n   @JoinColumn(name = "id_creator", \n        referencedColumnName = "id_user")\n   private UserEntity creator;\n\n   //Accessors\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

查看描述文件:

\n\n
public class Views\n{\n …
Run Code Online (Sandbox Code Playgroud)

spring json hibernate spring-mvc spring-data

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

使用glEnable(GL_DEPTH_TEST)显示不正确

我的程序必须显示一个旋转的立方体,用简单的灯光照亮.问题是立方体正在闪烁.当我撤回调用glEnable(GL_DEPTH_TEST)时,立方体不闪烁,但我可以看到它内部的面(这是正常的,因为没有深度测试).但是这个电话是必不可少的 所以我不明白为什么这个函数的调用不能正常工作.

这是我的代码:

#include <iostream>
#include <SDL/SDL.h>
#include <gl/glut.h>

const static int    WIDTH = 640;
const static int    HEIGHT = 480;

GLfloat angle = 0.0f;

static GLfloat  position[4] = {0.0, 50.0, -50.0, 1.0};
static GLfloat diffuse[3] = {0.64, 0.64, 0.64};
static GLfloat specular[3] = {0.64, 0.64, 0.64};
static GLfloat emissive[3] = {0.0, 0.0, 1.0};

static GLfloat vertices[72] =
{
    1.000000, -1.000000, -1.000000,     //V1
    1.000000, -1.000000, 1.000000,      //V2
    -1.000000, -1.000000, 1.000000,     //V3
    -1.000000, -1.000000, -1.000000,    //V4

    1.000000, 1.000000, -0.999999,      //V5
    -1.000000, …
Run Code Online (Sandbox Code Playgroud)

opengl sdl depth-buffer depth-testing

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

关于场景图构思的简单好奇心

我正在使用OpenGL编写一个简单的3D引擎.我已经使用以下模式实现了一个简单的场景图:

ISceneNode
    IMeshSceneNode
         StaticMeshSceneNode
    ICameraSceneNode
         StaticCameraSceneNode
         TrackBallCameraSceneNode
    ILightSceneNode
         PointLightSceneNode
Run Code Online (Sandbox Code Playgroud)

但我想知道'渲染器'(实现着色器程序的类)是否也可以是场景节点(将渲染代码从MeshSceneNode提取到RenderSceneNode).对我来说,这可能是一个正确的选择,因为如果我必须使用相同的顶点和片段着色器渲染多个网格(例如42个网格),那么绑定和取消绑定着色器程序只需一次而不是42次就非常有用!

那么您如何看待以下架构:

第一个代表我当前的概念(为了简单起见,我不代表'Light'和'Camera'场景节点).

在此输入图像描述

所以,在这里,如果我想渲染我的3个网格物体(使用3个着色器程序使用相同的着色器),我将为每个帧绑定和取消绑定3次我的着色器程序(在每个网格节点的"渲染"方法中).

这是另一个概念:

在此输入图像描述

如上所示,这次我将在渲染节点中为所有子节点绑定一个唯一的着色器程序.所以它可能会更快.

你怎么看待我的想法?

opengl openscenegraph scenegraph

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

使用纹理缓冲区对象(OpenGL)在图形应用程序中管理矩阵的有效方法

我正在使用OpenGL和GLSL开发一个小型3D引擎.我目前使用纹理缓冲对象(TBO)来存储我的所有矩阵(Proj,View,Model和Shadow Matrices).但我做了一些研究,在图形引擎中处理矩阵的最佳方法(我的意思是最有效的方法)没有任何成功.目标是将最大矩阵存储到最小数量的TBO中,并且发生最小的状态变化以及GPU和客户端代码之间的最小交换(glBufferSubData).

我提出了两种不同的方法(优点和缺点):

这是一个场景示例:

1个摄像头(1个ProjMatrix,1个ViewMatrix)5个盒子(5个ModelMatrix)

这是我使用的简单顶点着色器的示例:

#version 400

/*
** Vertex attributes.
*/
layout (location = 0) in vec4 VertexPosition;
layout (location = 1) in vec2 VertexTexture;

/*
** Uniform matrix buffer.
*/
uniform samplerBuffer matrixBuffer;

/*
** Matrix buffer offset.
*/
uniform int MatrixBufferOffset;

/*
** Output variables.
*/
out vec2 TexCoords;

/*
** Returns matrix4x4 from texture cache.
*/
mat4 Get_Matrix(int offset)
{
    return (mat4(texelFetch(
        matrixBuffer, offset), texelFetch(
            matrixBuffer, offset + 1), texelFetch(matrixBuffer, offset + 2),
                texelFetch(matrixBuffer, offset …
Run Code Online (Sandbox Code Playgroud)

opengl shader glsl matrix vertex-shader

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

如何知道特定设备上的最大缓冲区存储大小(使用 OpenGL)?

我对回答这个问题的主题做了一些研究:如何知道缓冲区(XXX缓冲区对象)可以包含的最大大小(以字节为单位),具体取决于执行应用程序的设备(GPU)?

\n\n

例如,关于顶点存储,我使用顶点缓冲区对象(VBO),了解是否可以分配特定大小的唯一方法是检查函数 glGetError() 是否返回错误 GL_OUT_OF_MEMORY。因此,如果发生此异常,我将需要将其余数据存储在另一个 VBO 中(这显然与索引缓冲区对象 (IBO) 相同)。

\n\n

现在,为了存储我的矩阵,我使用纹理缓冲区对象 (TBO),对于材质和灯光参数,我使用统一缓冲区对象 (UBO)。

\n\n

关于TBO,有一种方法可以知道最大尺寸:定义的值GL_MAX_TEXTURE_BUFFER_SIZE\xe2\x80\x8b(纹理(或这里的矩阵数据)最多只能访问GL_MAX_TEXTURE_BUFFER_SIZE\xe2\x80\x8b纹理像素)。

\n\n

那么,要知道最大存储大小(以字节为单位),我是否必须应用方程式?

\n\n

TBO(maxByteSize) = GL_MAX_TEXTURE_BUFFER_SIZE * sizeof(glm::vec4) (我相信纹素是在 32 字节数组上定义的 -> glm::vec4)。是对的吗 ?

\n\n

我的设备如下:

\n\n

GeForce GTX 780M(我有笔记本电脑)

\n\n

以下是分别针对以纹素为单位的 TBO 最大大小、以字节为单位转换的 TBO 最大大小以及 UBO 和 SSBO 的不同宏的值:

\n\n
std::cout << "TBO(texels): " << GL_MAX_TEXTURE_BUFFER_SIZE << std::endl;\nstd::cout << "TBO(bytes): " << GL_MAX_TEXTURE_BUFFER_SIZE * sizeof(glm::vec4)<< std::endl;\nstd::cout << "UBO: " << GL_MAX_UNIFORM_BLOCK_SIZE << std::endl;\nstd::cout << "SSBO: " << GL_MAX_SHADER_STORAGE_BLOCK_SIZE << std::endl;\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n …

opengl

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