小编App*_*ell的帖子

无法使用GLFW设置GL标志

尝试设置以下一个或多个OpenGL标志:

glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
Run Code Online (Sandbox Code Playgroud)

glfwOpenWindow失败.为什么会这样?

[编辑]这似乎与主要= 3和MINOR = 2的工作,但代码上(的MacBook视网膜Mid2012)运行在笔记本电脑可以运行多达OpenGL的4.1(英特尔HD 4000有OpenGL 4.0,英伟达GT 650M拥有4.1) .[/编辑]

此外,虽然它可能不相关,但glfwGetGLVersion返回0所有三个参数.

完整示例代码如下:

int main(int argc, char * argv[])
{
    if(!glfwInit()) {
        return EXIT_FAILURE;
    }

    glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, GL_TRUE);
    //glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
    //glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3);
    //glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    //glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

    {
        int *major = new int, *minor = new int, *rev = new int;
        glfwGetGLVersion(major, minor, rev);
        std::cout << *major << " " << *minor << " " << *rev << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glfw

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

数字到固定长度的字符串

标准库中是否有一个函数可以工作std::to_string,但具有固定长度?

std::cout << formatted_time_string << ":" << std::to_string(milliseconds) << " ... other stuff" << std::endl;
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,毫秒的范围是1到3位数,因此输出格式不正确.

我知道有很多其他选项如何做到这一点(例如sprintf,计算长度等),但内联选项会很好.

c++ string

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

当元素被智能指针包装时,std :: set是否仍然排序?

当然有一个班级超载operator<......

class Rectangle {
    // ...
    const inline bool operator< (const Rectangle &rhs) const {
        return x < rhs.x || (x == rhs.x && y < rhs.y);
    }
}
Run Code Online (Sandbox Code Playgroud)

... set当元素被智能指针包裹时,是否仍然使用此重载?

std::multiset<std::shared_ptr<Rectangle>> elements;
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

C++时钟保持为零

我正在尝试获取我的程序的已用时间.其实,我想我应该使用yclock()time.h.但它在程序的所有阶段都保持为零,尽管我添加了10 ^ 5个数字(必须消耗一些CPU时间).我已经搜索过这个问题,看起来,运行Linux的人只有这个问题.我正在运行Ubuntu 12.04LTS.

我要比较AVX和SSE指令,所以使用time_t它不是一个真正的选择.任何提示?

这是代码:

 //Dimension of Arrays
unsigned int N = 100000;
//Fill two arrays with random numbers
unsigned  int a[N];
clock_t start_of_programm = clock();
for(int i=0;i<N;i++){
    a[i] = i;
}
clock_t after_init_of_a = clock();
unsigned  int b[N];
for(int i=0;i<N;i++){
    b[i] = i;
}
clock_t after_init_of_b = clock();

//Add the two arrays with Standard
unsigned int out[N];
for(int i = 0; i < N; ++i)
    out[i] = a[i] + b[i];
clock_t after_add …
Run Code Online (Sandbox Code Playgroud)

c++ time.h

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

std :: bind如何以及为什么保持指针活着

将方法与对象指针绑定并在之后删除该对象,该方法仍然是可调用的.

struct A {
    void b(){std::cout << "SUHDU" << std::endl;}
};

int main(int argc, const char * argv[])
{
    A *a = new A;
    auto f1 = std::bind(&A::b, a);
    auto f2 = std::bind(&A::b, std::ref(a));

    f1();
    f2();

    delete a;
    f1(); // still outputs SUHDU
    f2(); // still outputs SUHDU
}
Run Code Online (Sandbox Code Playgroud)

为什么std::bind这样做,它是如何做到的?

c++ c++11

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

在恒定时间附加两个容器

我正在寻找一种方法,以恒定(或至少最小的线性)时间附加两个容器.

我注意到链接list的合并,但它似乎对元素进行排序.是不是有一个容器/方法只是将容器重新链接到另一个容器(比如说list1.last_element.next = list2.first_element)?

c++ c++11

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

使用clang编译c ++ 11启用失败

有以下内容test.cpp:

#include <iostream>
int main() {
        int a{};
        std::cout << "TEST" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

使用最新的GCC(4.8.0)g++ test.cpp -std=c++11(gcc也失败)构建时,文件编译.试着用最新的铿锵编译

clang version 3.4 (trunk 182322)
Target: x86_64-apple-darwin12.3.0
Thread model: posix
Run Code Online (Sandbox Code Playgroud)

构建失败:

clang test.cpp -std=c++11 

Undefined symbols for architecture x86_64:
  "std::ostream::operator<<(std::ostream& (*)(std::ostream&))", referenced from:
      _main in test-NcubkF.o
  "std::ios_base::Init::Init()", referenced from:
      ___cxx_global_var_init in test-NcubkF.o
  "std::ios_base::Init::~Init()", referenced from:
      ___cxx_global_var_init in test-NcubkF.o
  "std::cout", referenced from:
      _main in test-NcubkF.o
  "std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)", referenced from:
      _main in test-NcubkF.o
  "std::basic_ostream<char, std::char_traits<char> …
Run Code Online (Sandbox Code Playgroud)

c++ macos clang c++11

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

必须为每个 VAO 上传一次着色器制服吗?

每个顶点数组对象是否必须上传一次着色器制服(例如不经常更改的投影矩阵)?或者绑定变量与活动的VAO无关,着色器在绘制时只与顶点对象连接?

(例如,在通过绘制命令将顶点数据发送给着色器之前,着色器是否代表自己,或者是否以某种方式绑定到创建的 vao?)

c++ opengl shader

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

结构前向声明错误:使用不同类型的Typedef重定义

我想转发声明头文件中的结构.

struct GLFWvidmode;

class DesktopVideoMode {
private:
    const GLFWvidmode *videomode;
public:
    DesktopVideoMode(const GLFWvidmode *videomode);
...
Run Code Online (Sandbox Code Playgroud)

在cpp文件中,我包含带有定义的外部头文件......

#include "DesktopVideoMode.hpp"
#include <GLFW/glfw3.h>
Run Code Online (Sandbox Code Playgroud)

...出现错误" Typedef重新定义不同类型('struct GLFWvidmode'与'GLFWvidmode') "的情况:

typedef struct
{
    /*! The width, in screen coordinates, of the video mode.
     */
    int width;
    /*! The height, in screen coordinates, of the video mode.
     */
    int height;
    /*! The bit depth of the red channel of the video mode.
     */
    int redBits;
    /*! The bit depth of the green channel of the video mode. …
Run Code Online (Sandbox Code Playgroud)

c++ struct forward-declaration

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

std :: map中的用户定义类:二进制表达式的无效操作数

我想使用一个类作为std :: map中的键。

std::map<Type, value> collection;
Run Code Online (Sandbox Code Playgroud)

尽管我定义了operator<,但密钥不被接受:Invalid operands to binary expression ('const Type' and 'const Type')

class Type {
public:
    inline bool operator< (const Type& rhs) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

c++ c++11

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

C++编程 - 这种分配是不可避免的内存泄漏吗?

我对粘贴的代码有疑问.我为int分配了内存并删除了(像往常一样).但在某处,我看到这个sysntax(第1行)分配了一个匿名的int空间.如何释放这个空间,这不是内存泄漏的结果吗?

main(){
  int *p = new int;
  new int;

  if(p)
   delete p;
  system("PAUSE");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ memory-management

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

在包含输入元素的页面上通过链接启用选项卡

我想让用户能够浏览页面的链接。

这是大多数浏览器中的默认行为,但是一旦页面包含一个input元素,它就会成为(取决于浏览器)页面上唯一的可选项卡元素,例如a无法通过键盘访问元素。tabindex无论是否设置,这都不会改变。

请参阅以下示例。聚焦输入元素,按tab几下;Chrome 会聚焦链接,而 Firefox 和 Safari 会跳过这些元素。

<div>
  <form>
    <input type="text" tabindex="0">
     <button tabindex="0">send</button>
  </form>
</div>
<a href="#" tabindex="0">Link</a>
<a href="#" tabindex="0">Link</a>
Run Code Online (Sandbox Code Playgroud)

如何在没有 JavaScript 的情况下实现跨浏览器键盘导航并规避此问题?

html accessibility cross-browser keyboard-navigation tabindex

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

lambda表达式在while()中调用,为什么我们需要在lambda表达式之后添加()

while ([&s]()->bool {
  cout << "Please Input you word<input \"q \" to exit>:"; 
  return (cin >> s) && (s != "[enter image description here][1]q"); 
}())
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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