小编jma*_*erx的帖子

何时在C++中从内存中删除变量?

我现在一直在使用C++.我只是不确定内存管理是如何工作的,所以在这里:

我首先不确定函数中的内存是如何分配的,例如:

int addTwo(int num)
{
    int temp = 2;
    num += temp;
    return num;
}
Run Code Online (Sandbox Code Playgroud)

那么在这个例子中,函数结束后是否会从内存中删除?如果没有,这是怎么做的.在C#中,一旦变量用完,变量就会被删除.还有其他我应该知道的案例吗?

谢谢

c c++ memory memory-management

5
推荐指数
4
解决办法
8766
查看次数

如何在2D游戏中处理游戏事件长度

我知道如何处理这个问题,但我不确定它是否理想.事件我的意思是,例如,如果玩家获胜,一堆火花飞行1秒钟.我正在考虑创建我的游戏引擎类,然后创建一个游戏事件基类,它有3个void函数,update,draw,render.例如,可以存在用于收集100个硬币3秒钟的火炮.我想要实现它的方式是在我的游戏引擎中有一个事件向量,我可以在其中推动fireforks动画.一旦在向量中推送了一些东西,游戏就会执行event [i] .render()等...删除它我认为每个事件可以在帧中具有事件长度,并且每个帧增加一个uint,如果uint与长度匹配,则从向量中弹出它.我只是不确定如果这样做是最好的方式.

谢谢

c++

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

OpenGL抗锯齿不起作用

我一直试图用OGL反别名.我找到了一个应该执行此操作的代码块,但我看不到任何抗锯齿.我也在Nvidia控制面板中重置我的设置,但没有运气.

这个代码实际上是反立方体吗?

GLboolean polySmooth = GL_TRUE;
static void init(void)
{
   glCullFace (GL_BACK);
   glEnable (GL_CULL_FACE);
   glBlendFunc (GL_SRC_ALPHA_SATURATE, GL_ONE);
   glClearColor (0.0, 0.0, 0.0, 0.0);
}

#define NFACE 6
#define NVERT 8
void drawCube(GLdouble x0, GLdouble x1, GLdouble y0, 
              GLdouble y1, GLdouble z0, GLdouble z1)
{
   static GLfloat v[8][3];
   static GLfloat c[8][4] = {
      {0.0, 0.0, 0.0, 1.0}, {1.0, 0.0, 0.0, 1.0},
      {0.0, 1.0, 0.0, 1.0}, {1.0, 1.0, 0.0, 1.0},
      {0.0, 0.0, 1.0, 1.0}, {1.0, 0.0, 1.0, 1.0},
      {0.0, 1.0, 1.0, 1.0}, {1.0, …
Run Code Online (Sandbox Code Playgroud)

c c++ opengl antialiasing

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

使用OpenGL创建多个多边形很慢?

我想在屏幕上绘制许多多边形,但我很快注意到它会很快减速.作为测试,我这样做:

for(int i = 0; i < 50; ++i)
{
        glBegin( GL_POLYGON);
        glColor3f( 0.0f, 1, 0.0f ); glVertex2f( 500.0 + frameGL.GetCameraX(), 0.0f + frameGL.GetCameraY());
        glColor3f( 0.0f, 1.0f, 0.0f ); glVertex2f( 900.0 + frameGL.GetCameraX(), 0.0f + frameGL.GetCameraY());
        glColor3f( 0.0f, 0.0f, 0.5 ); glVertex2f(900.0 + frameGL.GetCameraX(), 500.0f + frameGL.GetCameraY() + (150));
        glColor3f( 0.0f, 1.0f, 0.0f ); glVertex2f( 500 + frameGL.GetCameraX(), 500.0f + frameGL.GetCameraY());
        glColor3f( 1.0f, 1.0f, 0.0f ); glVertex2f( 300 + frameGL.GetCameraX(), 200.0f + frameGL.GetCameraY());
        glEnd();
}
Run Code Online (Sandbox Code Playgroud)

这只有50个多边形,而且已经很慢了.我无法将它们直接上传到卡片中,因为我的程序将允许用户重新整形顶点.

我的问题是,我怎样才能加快速度.我没有使用深度.我也知道这不是我的GetCamera()函数,因为如果我创建500,000个多边形分开t很好,它只是在视图中显示它们有困难.如果显卡每秒可以支持500,000,000个屏幕多边形,这应该很容易吗?

谢谢

c c++ opengl

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

使用多个线程进行GL调用是否安全?

我想知道用多线程进行GL调用是否安全.基本上我正在使用GLUtesselator并且想知道我是否可以将对象划分为4并为每个对象分配一个线程.

我只是想知道这是否会导致麻烦,因为tesselator使用回调函数.只要该回调不能访问ant全局变量,2个线程可以同时运行相同的回调吗?

还有其他方法可以使用多线程优化OpenGL绘图吗?

c c++ opengl multithreading

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

为什么我的计时器停止滴答?

我正在创建一个绘图应用程序,当它获得WM_SCROLL或WM_MOUSEMOVE时呈现OpenGL.事情是有很多鼠标移动,我只需要它每秒渲染最多60帧.所以我在我的引擎类中创建了一个名为CanRender的bool.所以在我的render()proc我做:if(!CanRender){return; } CanRender = false;

基本上它可以防止它渲染超过60 FPS.

我在WM_CREATE中创建了计时器.

当我得到WM_TIMER时,我将CanRender设置为true.

我发出嘟嘟声,所以我知道计时器正在运行.一旦我开始滚动或移动鼠标,哔哔声停止,我不再看到渲染.为什么要停止我的计时器?此外,当我最小化计时器再次启动然后重新启动时,它再次停止.

谢谢

消息泵:

// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

}

return (int) msg.wParam;
Run Code Online (Sandbox Code Playgroud)

创建:

case WM_CREATE:
    //Set Window Title
    SetWindowText(hWnd,engineGL.current.caption.c_str());

    SetTimer(hWnd,             // handle to main window 
        120,                    // timer identifier 
        17,                     // 60 fps interval 
        (TIMERPROC) NULL);     // no timer callback 
Run Code Online (Sandbox Code Playgroud)

c c++ winapi

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

帮助解决这个问题?

我正在试图弄清楚如何做到这一点.基本上我有点A和B,我知道它的位置.然后我有点C和点D,我只知道C的坐标.我知道CD的长度,知道CD必须与AB平行.我怎么能一般解决D给定的A,B,C和CD的长度.谢谢

alt text http://img706.imageshack.us/img706/4494/imgclr.png

c c++ algorithm math

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

算法只绘制相机看到的内容?

我正在使用OpenGL制作3D FPS,这是它如何工作的基础知识.游戏是立方体的3D阵列.我知道玩家当前立方体的位置,以及相机x,y,z,我也知道相机的x,y,z旋转.现在我只是围绕玩家制作一个正方形并渲染它然后添加远处的雾.但问题是,我仍在渲染玩家所拥有的一切.我怎么能有选择地只渲染玩家看到的东西,而不是像我现在所做的那样在X半径范围内渲染所有东西.

谢谢

c c++ opengl rendering

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

让朋友类只能访问另一个类的1个函数吗?

可能重复:
这种面向密钥的访问保护模式是一种已知的习惯用法吗?

我有class Aclass B.我想class A访问其中一个class B私有函数; 但只有这一点,而不是其他一切.那可能吗?

某种例子:

class A {
  //stuff
};

class B {
  int r; // A cant use this
  MagicFriendKeyword A void func(); // A can use this
public:
  ...
};
Run Code Online (Sandbox Code Playgroud)

c++

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

面向对象的迭代std :: vector的方法?

我有一个类有一个子控件指针的std :: vector.出于显而易见的原因,我不希望类的用户直接访问std :: vector.我想要的只是给调用者提供指针的方法.什么是一个很好的OO方式来做到这一点?(此功能将经常调用)

谢谢

c++ oop vector

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