小编Kev*_*vin的帖子

从深度缓冲区读取深度值的有效方法

对于我的算法,我需要能够访问深度缓冲区.使用glReadPixels我完全没有问题,但是读取800x600窗口非常慢(从300 fps到20 fps)

我正在阅读很多相关内容,我认为将深度缓冲区转储到纹理会更快.我知道如何创建纹理,但我如何获得深度?

创建FBO并从那里创建纹理可能更快,目前我正在使用FBO(但仍然与glReadPixels结合使用).

那么最快的方法是什么?

(我可能无法使用GLSL,因为我对此一无所知,我没有多少时间可以学习,截止日期!)

编辑:PBO会起作用吗?如下所述:http://www.songho.ca/opengl/gl_pbo.html它可以快得多,但我不能像示例中那样一直更改缓冲区.

Edit2:我如何将深度数据放入PBO?目前我这样做:

glGenBuffersARB(1, &pboId);
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pboId);
glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, 800*600*sizeof(GLfloat),0,     GL_STREAM_READ_ARB);
Run Code Online (Sandbox Code Playgroud)

就在我的readpixels之前,我再次调用glBindbuffer.结果是我什么都没读.如果我禁用PBO,它一切正常.

最终编辑:我想我解决了,我不得不使用:

glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pboId);
glReadPixels( 0, 0,Engine::fWidth, Engine::fHeight, GL_DEPTH_COMPONENT,GL_FLOAT, BUFFER_OFFSET(0));

GLuint *pixels = (GLuint*)glMapBufferARB(GL_PIXEL_PACK_BUFFER_ARB, GL_READ_ONLY);
Run Code Online (Sandbox Code Playgroud)

这给了我20 FPS的增长.它不是那么多,但它是一些东西.

所以,我使用了2个PBO,但我仍遇到一个问题:我的代码只执行一次.

glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pboIds[index]);  
std::cout << "Reading pixels" << std::endl;
glReadPixels( 0, 0,Engine::fWidth, Engine::fHeight, GL_DEPTH_COMPONENT,GL_FLOAT, BUFFER_OFFSET(0));
std::cout << "Getting pixels" << std::endl;
//  glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, 800*600*sizeof(GLfloat), 0, GL_STREAM_DRAW_ARB);
GLfloat *pixels = (GLfloat*)glMapBufferARB(GL_PIXEL_PACK_BUFFER_ARB, GL_READ_ONLY);
int count = 0;
for(int i = 0; i != 800*600; ++i){ …
Run Code Online (Sandbox Code Playgroud)

opengl

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

ASP.NET应用程序的高内存使用率

我们的一些ASP.Net应用程序存在问题.我们的一些应用程序从一开始就声称拥有大量内存作为其工作集.

在我们的2个webfarm服务器(每个4GB的RAM)上运行多个应用程序.我们有一个稳定的环境,大约1.2GB的内存空闲.

然后我们添加一个MVC5 + WebApi v2 +实体框架应用程序,立即声称1 + gb作为工作集内存,而实际上只使用大约300mb.这导致其他应用程序抱怨没有足够的内存.

我们已经尝试设置虚拟内存限制和私有内存限制,但没有任何效果.如果我们将其设置为大约500mb,则应用程序仍然使用或多或少相同数量的内存(超过500)并且似乎不尊重所设置的限制.

作为参考,我用一个空的MVC5项目(VS2013模板)测试了这个,这已经声称300mb的内存,而只使用大约10mb.

将应用程序设置为32位应用程序似乎对减小工作集的大小有一些影响.

有没有办法减少工作集的大小,或强制对其大小进行硬性限制?

编辑:如果使用Web Api v2和Entity Framework为项目使用大量内存,我的API控制器如下所示:

namespace Foo.Api
{
public class BarController : ApiController
{
    private FooContext db = new FooContext(); 

    public IQueryable<Bar> GetBar(string bla)
    {
        return db.Bar.Where(f => f.Category.Equals(bla)).OrderBy(f => f.Year);
    }
}
Run Code Online (Sandbox Code Playgroud)

因为他们看了我能找到的大多数教程(包括来自微软的教程).using由于LINQ延迟加载,在此使用不起作用.如果我在任何地方添加了ToList(未经测试),它可以工作,但这有什么其他影响吗?

edit2:如果我这样做的话

namespace Foo.Api
{
public class BarController : ApiController
{
    public List<Bar> GetBar(string bla)
    {
        using(FooContext db = new FooContext){
           return db.Bar.Where(f => f.Category.Equals(bla)).OrderBy(f => f.Year).ToList();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ToList()是否对api的性能有任何影响?(我知道我不能像IQueryable一样便宜地继续查询)

Edit3:我注意到它的应用程序的私有工作集非常高.有没有办法限制这个?(不会导致不断循环)

编辑4:据我所知,我在每个APIController上都有一个Dispose.我的前端只是一些简单的MVC控制器,但对于大部分.cshtml和javascript(角度)文件. …

c# asp.net iis asp.net-mvc asp.net-web-api

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

Fullcalendar错误的点击事件时间

我正在使用angular和fullcalendar.我有(惊喜)时区问题,我似乎无法做到正确.

如果在周视图中我点击08.00小时,我打开一个模态并显示时间,我看到09.00小时.

timezone: "Europe/Brussels",
ignoreTimezone: false,
Run Code Online (Sandbox Code Playgroud)

这是(atm)a +0100时区,夏季是+0200时区

点击事件:

dayClick: function (date, jsEvent, view) {

    $scope.newEventDate = date;

    var modalInstance = $modal.open({
        templateUrl: 'newRosterEvent',
        controller: 'NewEventModalController',
        backdrop: "true",
        resolve: {
            event: function () {
                       return $scope.newEventDate;
                   },
            stage: function () {
                       return $scope.stage;
                   }
            }
       });
Run Code Online (Sandbox Code Playgroud)

要显示时间:

stagewebApp.controller('NewEventModalController', ["$scope", "$modalInstance","$filter", "event", "stage", function ($scope, $modalInstance, $filter,event, stage) {

    $scope.stage = stage;

    $scope.day = new Date($filter('date')(event._d, "yyyy-MM-dd"));

    $scope.start = event.toDate();

    ....more code....
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,$ scope.start显示点击的时间+1

因此,似乎fullcalendar占用我点击的时间并将其转换为所选的时区,但我希望它将点击的时间解释为我选择的时区.

显然我正在解决这个问题,那么这样做的正确方法是什么?($scope.start应显示我点击的时间(最好是在我的时区)).然后我将它发送到存储为UTC的服务器.

javascript timezone fullcalendar angularjs

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

GLUT和C++类

我刚刚开始使用OpenGL,使用GLUT.您不能将成员函数传递给GLUT函数.(或指向成员的指示,尽管我没有真正探索那个选项).

我想知道是否有"体面"的方式,或者解决这个问题的"最体面"方式是什么?我知道你可以使用静态成员函数,但是没有更好的方法吗?

我知道还有其他库,比如用C++编写的SFML,并提供基于C++类的接口,但我想知道GLUT的可能性是什么(确切地说是freeglut).

c++ opengl glut freeglut

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

pg-promise:将函数作为参数传递给func()

我正在使用pg-promise访问我们的postgres数据库.我想调用一个foo(geom)接受几何数据类型(PostGIS)的存储过程.我只有lats/lngs开头,所以我想用postGIS转换它们.

这看起来像这样:

db.func('foo', 'ST_MakePoint(' + location.lat + ', ' + location.lng + ')')
  .then((result) => {
    console.log(bar);
  });
Run Code Online (Sandbox Code Playgroud)

我现在收到错误,抱怨我的几何体无效(转换不会发生).我相信ST_MakePoint我所拥有的价值观的作品.我猜它在数据库上执行时将其解释为字符串而不是函数调用.

我应该如何传递此参数才能使其正常工作?

javascript postgresql pg-promise

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

Web Api 2 + EF6 - 构建DTO

对于一个项目,我们正在使用EF和Web Api 2.为了从我们的数据库模型中抽象出来,我们正在使用DTO.我们有一个工厂来建造这些DTO:

public class FooFactory:IModelConverter<FooDTO, Foo>
{

    public FooDTO Create(Foo data)
    {
        return new FooDTO()
        {
           //Some fields
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

在我们的Api电话中,我们可以做到:

public async Task<IHttpActionResult> GetFoo()
    {
        var foos = db.Foos

        //DO STUFF

         var dtos = (await foos.ToListAsync()).Select(m => _converter.Create(m)); //Converter is an instance of FooFactory)

        return Ok(dtos);
    }
Run Code Online (Sandbox Code Playgroud)

这有效,但暗示在执行查询后,我们必须遍历所有结果并将每个模型转换为DTO.

另一方面,我们可以这样做:

public async Task<IHttpActionResult> GetFoo()
    {
        var foos = db.Foos

        //DO STUFF

        return Ok(await foos.Select(m => new FooDTO() { 
            //Assign fields
        }).ToListAsync());
    }
Run Code Online (Sandbox Code Playgroud)

哪个会将此投影集成到EF执行的查询中.但是这暴露了FooDTO的所有内部细节,我们必须重复所有这些创建代码.

有没有办法做这样的事情:

public async Task<IHttpActionResult> GetFoo() …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework asp.net-web-api

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

在python中合并带连字符的单词

我正在尝试在pythog中合并一个带连字符的单词.例如,我有:

bla bla bla infor-
mation bla bla bla
Run Code Online (Sandbox Code Playgroud)

我想结束blabla information bla bla bla.

我可以匹配连字符,删除换行符,所有这些东西都很简单,但我似乎无法将这两个部分加入.我得到的关闭是bla bla bla infor mation bla bla,但显然我不能在一个空间上匹配而不删除所有其他空格.

任何帮助将不胜感激.

python regex

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

来自AngularJS ui的分页不可见

我有一个简单的数据集,我想使用angular-js ui进行分页.这是服务器驱动的分页,因为它可以变得非常大.

现在,我遇到的问题是我的分页元素没有显示出来.

<pagination total-items="totalItems" page="filterCriteria.pageNumber"></pagination>
Run Code Online (Sandbox Code Playgroud)

就是我所拥有的,这两个参数都是正确的(测试过).

起初我以为我可能没有导入所有正确的文件,但经过一些检查后我似乎找不到任何遗漏:

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script><!-- load jquery -->
<script src="js/angular-file-upload-shim-min.js"> </script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script><!-- load angular -->
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.10.0/ui-bootstrap-tpls.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

有什么想法为什么分页元素不会出现在我的页面上?

javascript angularjs angular-ui angular-ui-bootstrap

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

重载函数调用操作符和赋值

在我的一个项目中,我正在写一个包装器std::vector.我这样做是因为我使用的是齐次坐标,对于某些操作来说,暂时"忘记"第四个坐标更容易.

现在我偶然发现了一个问题.我有大量的作业,如下所示:

    Vector v;
    v(0) = 5;
    v(1) = 6;
Run Code Online (Sandbox Code Playgroud)

等等.我还想做以下事情:

   double x;
   x = v(0);
Run Code Online (Sandbox Code Playgroud)

对于最后一件事,我可以重载()运算符,但是如何实现第一件事?(零和一个是索引).

c++ operator-overloading

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

使用散列图将点划分为子区域

我有200像素x 200像素的2D光栅我想将其细分为每个10x10像素的400"桶".

然后我有一个点(大约200k)的列表,我想在上述结构中映射.因此,如果该点落入10x10区域,请将其添加到存储桶中.

现在,在我看来哈希表可以做得很好.我想知道这是否可以使用STL?

我尝试使用stl :: unordered_map并指定桶的数量,但这不起作用,它'忽略'该请求.(因为太多的项目被映射到我认为的相同区域,但在我的情况下,这不是问题,相反,这就是整个问题).

用STL有没有办法做到这一点?

c++ algorithm hash data-structures

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

SFML生成等距图块

我有一个精灵,一个正方形,仅用于正交投影.现在我想以一种非常基本的,简单的等距方式投影它.(我知道这可能不太漂亮,但我只是想弄清楚这一点)

鉴于我的方格,我将它旋转45度.现在,如果我理解正确,我仍然应该将我的身高除以2.这在SFML中是不可能的.有一个比例函数,但是如果我在y轴方向上以0.5的比例缩放,我的立方体就会被拉伸,而不是钻石形状.看起来SFML根据它自己的相对轴(在...之前旋转)来转换精灵.

既然你无法访问精灵的高度,我想知道这是否可能?

我可以在SFML中将方形精灵转换为菱形吗?

c++ graphics 2d sfml

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