我刚刚在我的 Mac 上安装了 Visual Studio 2012/2013,并在 bootcamp 上安装了 Windows7。
但是,我的 VS 项目(win32 项目)似乎无法在它们上正常工作。一旦我单击 F5/ctrl+F5,窗口就会突然显示并消失。我尝试了 VS 2012 和 2013,都遇到了同样的问题。而bin文件夹中生成的exe文件也有同样的问题。我测试的所有项目都可以在其他 PC 上正常运行。
我尝试了一个基本的控制台“HelloWorld”项目,它工作正常。
有人知道它有什么问题吗?
截图在这里:http: //imgur.com/amQS3Ys
非常感谢!
麦粒肿
<!-- language: C++ -->
#include <sb6.h>
#include <vmath.h>
class my_app : public sb6::application
{
public:
void startup(){
rendering_program = compile_shaders();
glGenVertexArrays(1, &vertex_array_object);
glBindVertexArray(vertex_array_object);
}
void render(double currentTime){
const GLfloat color[] = { 0.0f, 0.0f, 0.5f, 1.0f };
glClearBufferfv(GL_COLOR, 0, color);
glUseProgram(rendering_program);
GLfloat attrib[] = { (float)sin(currentTime) * 0.5f,
(float)cos(currentTime) * 0.6f,
0.0f, 0.0f };
glVertexAttrib4fv(0, attrib);
GLfloat attribColor[] = { 1.0f, 0.0f, 0.0f, 1.0f };
glVertexAttrib4fv(1, attribColor);
glDrawArrays(GL_TRIANGLES, 0, 3);
}
void shutdown(){
glDeleteVertexArrays(1, &vertex_array_object);
glDeleteProgram(rendering_program);
}
private:
GLuint rendering_program;
GLuint vertex_array_object;
GLuint compile_shaders(void){
GLuint vertex_shader;
GLuint fragment_shader;
GLuint program;
static const GLchar * vertex_shader_source[] = {
"#version 410 core \n"
" \n"
"layout (location = 0) in vec4 offset; \n"
"layout (location = 1) in vec4 color; \n"
" \n"
"out VS_OUT \n"
"{ \n"
" vec4 color; \n"
"} vs_out; \n"
" \n"
"void main(void) \n"
"{ \n"
" const vec4 vertices[3] = vec4[3](vec4( 0.25, -0.25, 0.5, 1.0), \n"
" vec4(-0.25, -0.25, 0.5, 1.0), \n"
" vec4( 0.25, 0.25, 0.5, 1.0)); \n"
" \n"
" gl_Position = vertices[gl_VertexID] + offset; \n"
" vs_out.color = color; \n"
"} \n"
};
static const GLchar * fragment_shader_source[] = {
"#version 410 core \n"
" \n"
"in VS_OUT \n"
"{ \n"
" vec4 color; \n"
"} fs_in; \n"
" \n"
"out vec4 color; \n"
" \n"
"void main(void) \n"
"{ \n"
" color = fs_in.color; \n"
"} \n"
};
vertex_shader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertex_shader, 1, vertex_shader_source, NULL);
glCompileShader(vertex_shader);
fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragment_shader, 1, fragment_shader_source, NULL);
glCompileShader(fragment_shader);
program = glCreateProgram();
glAttachShader(program, vertex_shader);
glAttachShader(program, fragment_shader);
glLinkProgram(program);
glDeleteShader(vertex_shader);
glDeleteShader(fragment_shader);
return program;
}
};
DECLARE_MAIN(my_app);