灯亮了但立方体没有出现

2023-12-01

我正在尝试在立方体上使用照明,但我不明白哪里出了问题。我可以看到光源,但屏幕的其余部分显示为黑色,所以我不明白为什么立方体消失了。

这是代码:

/*Header Inclusions*/
#include <iostream>
#include <GL/Glew.h>
#include <GL/freeglut.h>

// GLM Math inclusions
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include<glm/gtc/type_ptr.hpp>

using namespace std; // Uses the standard namespace

#define WINDOW_TITLE "Modern OpenGL" // Macro for window title

//Vertex and fragment shader
#ifndef GLSL
#define GLSL(Version, source) "#version " #Version "\n" #source
#endif


// Variable declarations for shaders, and window size initialization, buffer and vertex array object
GLint cubeShaderProgram, lampShaderProgram, WindowWidth = 800, WindowHeight = 600;
GLuint VBO, CubeVAO, LightVAO;

// subject position and scale
glm::vec3 cubePosition(0.0f, 0.0f, 0.0f);
glm::vec3 cubeScale(2.0f);

//cube and light color
glm::vec3 objectColor(0.6f, 0.5f, 0.75f);
glm::vec3 lightColor(1.0f, 1.0f, 1.0f);

//light position and scale
glm::vec3 lightPosition(0.5f, 0.5f, -3.0f);
glm::vec3 lightScale(0.3f);

//camera position
glm::vec3 cameraPosition(0.0f, 0.0f, -6.0f);

//camera rotation
float cameraRotation = glm::radians(-25.0f);


/* User-defined Function prototypes to:*/
void UResizeWindow(int,int);
void URenderGraphics(void);
void UCreateShader(void);
void UCreateBuffers(void);

/*Cube Vertex shader source code*/
const GLchar * cubeVertexShaderSource = GLSL(330,
layout (location = 0) in vec3 position;
layout (location = 1) in vec3 normal;

out vec3 Normal; //declare a vec 3 variable
out vec3 FragmentPos;

//Global variables for the transform matrices
    uniform mat4 model;
    uniform mat4 view;
    uniform mat4 projection;

     void main(){
            gl_Position = projection * view * model * vec4(position, 1.0f);//transform vertices

        FragmentPos = vec3(model * vec4(position, 1.0f));

            Normal = mat3(transpose(inverse(model))) * normal;
            }
    );

/*Cube Fragment shader program source code*/
const GLchar * cubeFragmentShaderSource = GLSL(330,

in vec3 Normal;
in vec3 FragmentPos;

out vec4 cubeColor;

//uniform variables
uniform vec3 objectColor;
uniform  vec3 lightColor;
uniform vec3 lightPos;
uniform vec3 viewPosition;


    void main(){

//phong lighting model calculations to generate ambient, diffuse, and specular components

//calculate ambient lighting
float ambientStrength = 0.1f;
vec3 ambient = ambientStrength * lightColor;

//calculater diffuse lighting
vec3 norm = normalize(Normal);
vec3 lightDirection = normalize(lightPos - FragmentPos);
float impact = max(dot(norm, lightDirection), 0.0);
vec3 diffuse = impact * lightColor;


//calculate specular lighting
float specularIntensity = 1.8f;
float highlightSize = 16.0f;
vec3 viewDir = normalize(viewPosition - FragmentPos);
vec3 reflectDir = reflect(-lightDirection, norm);

//calculate specular component
float specularComponent = pow(max(dot(viewDir, reflectDir), 0.0), highlightSize);
vec3 specular = specularIntensity * specularComponent * lightColor;

//calculate phong result
vec3 phong = (ambient + diffue + specular) * objectColor;

cubeColor = vec4(phong, 1.0f);

}
);


/* lamp shader source code*/
const GLchar * lampVertexShaderSource = GLSL(330,

    layout (location = 0) in vec3 position;

//Global variables for the transform matrices
    uniform mat4 model;
    uniform mat4 view;
    uniform mat4 projection;

void main()
{
            gl_Position = projection * view * model * vec4(position, 1.0f);//transform vertices
}
);


/*Fragment Shader Source Code*/
const GLchar * lampFragmentShaderSource = GLSL(330,

    out vec4 color;

    void main()
    {
      color = vec4(1.0f);

    }
);


//main program
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(WindowWidth, WindowHeight);
glutCreateWindow(WINDOW_TITLE);

glutReshapeFunc(UResizeWindow);


glewExperimental = GL_TRUE;
    if (glewInit()!= GLEW_OK)
    {
    std::cout << "Failed to initialize GLEW" << std::endl;
    return -1;
    }

    UCreateShader();

    UCreateBuffers();

        glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set background color

        glutDisplayFunc(URenderGraphics);


        glutMainLoop();

        // Destroys Buffer objects once used
        glDeleteVertexArrays(1, &CubeVAO);
    glDeleteVertexArrays(1, &LightVAO);
        glDeleteBuffers(1, &VBO);

        return 0;

    }

    /* Resizes the window*/
    void UResizeWindow(int w, int h)
    {
    WindowWidth = w;
        WindowHeight = h;
        glViewport(0, 0, WindowWidth, WindowHeight);
     }


     /* Renders graphics */
    void URenderGraphics(void)
    {

        glEnable(GL_DEPTH_TEST); // Enable z-depth

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clears the screen

    GLint modelLoc, viewLoc, projLoc, objectColorLoc, lightColorLoc, lightPositionLoc, viewPositionLoc;

    glm::mat4 model;
    glm::mat4 view;
    glm::mat4 projection;

    //use cube shader and activate cube VAO
    glUseProgram(cubeShaderProgram);
    glBindVertexArray(CubeVAO);

    //transform the cube
        model = glm::translate(model, cameraPosition);
        model = glm::scale(model, cubeScale);

        // Transforms the camera
        view = glm::translate(view, cameraPosition);
        view = glm::rotate(view, cameraRotation, glm::vec3(0.0f, 1.0f, 0.0f));

    //set the camera projection to perspective
    projection = glm::perspective(45.0f, (GLfloat)WindowWidth / (GLfloat)WindowHeight, 0.1f, 100.0f);

    // reference matrix uniforms from the cube shader program
    modelLoc = glGetUniformLocation(cubeShaderProgram, "model");
    viewLoc = glGetUniformLocation(cubeShaderProgram, "view");
    projLoc = glGetUniformLocation(cubeShaderProgram, "projection");

    //pass matrix data to the cube shader program's matrix uniforms
    glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model));
    glUniformMatrix4fv(viewLoc, 1, GL_FALSE, glm::value_ptr(view));
    glUniformMatrix4fv(projLoc, 1, GL_FALSE, glm::value_ptr(projection));

    // reference matrix uniforms from the cube shader program for the cube color, light color, light position, and camera position
    objectColorLoc = glGetUniformLocation(cubeShaderProgram, "objectColor");
    lightColorLoc = glGetUniformLocation(cubeShaderProgram, "lightColor");
    lightPositionLoc = glGetUniformLocation(cubeShaderProgram, "lightPos");
    viewPositionLoc = glGetUniformLocation(cubeShaderProgram, "viewPosition");

    //pass color, light, and camera data to the cube shader program's corresponding uniforms
    glUniform3f(objectColorLoc, objectColor.r, objectColor.g, objectColor.b);
    glUniform3f(lightColorLoc, lightColor.r, lightColor.g, lightColor.b);
    glUniform3f(lightPositionLoc, lightPosition.x, lightPosition.y, lightPosition.z);

    glUniform3f(viewPositionLoc, cameraPosition.x, cameraPosition.y, cameraPosition.z);

    glDrawArrays(GL_TRIANGLES, 0, 36);

    // use the lamp shader and activate the LVAO
    glUseProgram(lampShaderProgram);
    glBindVertexArray(LightVAO);

    // transform the smaller cube
    model = glm::translate(model, lightPosition);
    model = glm::scale(model, lightScale);

    // reference matrix uniforms from the lamp shader program
    modelLoc = glGetUniformLocation(lampShaderProgram, "model");
    viewLoc = glGetUniformLocation(lampShaderProgram, "view");
    projLoc = glGetUniformLocation(lampShaderProgram, "projection");

    //pass matrix data to the lamp shader program's matrix uniforms
    glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model));
    glUniformMatrix4fv(viewLoc, 1, GL_FALSE, glm::value_ptr(view));
    glUniformMatrix4fv(projLoc, 1, GL_FALSE, glm::value_ptr(projection));

    glDrawArrays(GL_TRIANGLES,0, 36);

    glBindVertexArray(0); // Deactivate the Vertex Array Object

    glutPostRedisplay();
    glutSwapBuffers();

}

 /*Creates the Shader program*/
         void UCreateShader()
         {

        // cube Vertex shader
        GLint cubeVertexShader = glCreateShader(GL_VERTEX_SHADER); // Creates the Vertex Shader
        glShaderSource(cubeVertexShader, 1, &cubeVertexShaderSource, NULL); // Attaches the Vertex Shader to the source code
        glCompileShader(cubeVertexShader); // Compiles the Vertex Shader

        // cube Fragment Shader
        GLint cubeFragmentShader = glCreateShader(GL_FRAGMENT_SHADER); // Creates the Fragment Shader
        glShaderSource(cubeFragmentShader, 1, &cubeFragmentShaderSource, NULL);// Attaches the Fragment Shader to the source code
        glCompileShader(cubeFragmentShader); // Compiles the Fragment Shader

        // Cube Shader program
        cubeShaderProgram = glCreateProgram(); // Creates the Shader program and returns an id
        glAttachShader(cubeShaderProgram, cubeVertexShader); // Attach Vertex Shader to the Shader program
        glAttachShader(cubeShaderProgram, cubeFragmentShader);; // Attach Fragment Shader to the Shader program
        glLinkProgram(cubeShaderProgram); //Link Vertex and Fragment shader, to Shader program

        // Delete the cube Vertex and Fragment shaders once linked
        glDeleteShader(cubeVertexShader);
        glDeleteShader(cubeFragmentShader);

    // Lamp Vertex Shader
    GLint lampVertexShader = glCreateShader(GL_VERTEX_SHADER);
    glShaderSource(lampVertexShader, 1, &lampVertexShaderSource, NULL);
    glCompileShader(lampVertexShader);

    // Lamp Fragment Shader
    GLint lampFragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
    glShaderSource(lampFragmentShader, 1, &lampFragmentShaderSource, NULL);
    glCompileShader(lampFragmentShader);

    // Cube Shader program
        lampShaderProgram = glCreateProgram(); // Creates the Shader program and returns an id
        glAttachShader(lampShaderProgram, lampVertexShader); // Attach Vertex Shader to the Shader program
        glAttachShader(lampShaderProgram, lampFragmentShader);; // Attach Fragment Shader to the Shader program
        glLinkProgram(lampShaderProgram); //Link Vertex and Fragment shader, to Shader program

    // Delete the lamp Vertex and Fragment shaders once linked
        glDeleteShader(lampVertexShader);
        glDeleteShader(lampFragmentShader);

         }


        /*creates the buffer and array object*/
         void UCreateBuffers()
         {

我尝试过单独测试顶点,我可以看到立方体。我不明白为什么添加照明后它就消失了。

             //position and color data
             GLfloat vertices[] = {

                     -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f,
                      0.5f, -0.5f, -0.5f, 0.0f,0.0f, -1.0f,
                      0.5f,  0.5f, -0.5f, 0.0f,0.0f, -1.0f,
                      0.5f,  0.5f, -0.5f, 0.0f, 0.0f,-1.0f,
                     -0.5f,  0.5f, -0.5f, 0.0f, 0.0f,-1.0f,
                     -0.5f, -0.5f, -0.5f, 0.0f, 0.0f,-1.0f,

                     -0.5f, -0.5f, 0.5f, 0.0f,0.0f, 1.0f,
                      0.5f, -0.5f, 0.5f, 0.0f,0.0f, 1.0f,
                      0.5f,  0.5f, 0.5f, 0.0f,0.0f, 1.0f,
                      0.5f,  0.5f, 0.5f, 0.0f,0.0f, 1.0f,
                     -0.5f,  0.5f, 0.5f, 0.0f,0.0f, 1.0f,
                     -0.5f, -0.5f, 0.5f, 0.0f,0.0f, 1.0f,


                      -0.5f, 0.5f,  0.5f, -1.0f, 0.0f,0.0f,
                      -0.5f, 0.5f,  -0.5f, -1.0f, 0.0f,0.0f,
                      -0.5f, -0.5f, -0.5f, -1.0f, 0.0f,0.0f,
                      -0.5f, -0.5f, -0.5f, -1.0f, 0.0f,0.0f,
                      -0.5f, -0.5f, 0.5f, -1.0f, 0.0f,0.0f,
                      -0.5f,  0.5f, 0.5f, -1.0f, 0.0f,0.0f,

                      0.5f,  0.5f, 0.5f, 1.0f, 0.0f,0.0f,
                      0.5f,  0.5f, -0.5f, 1.0f, 0.0f,0.0f,
                      0.5f,  -0.5f, -0.5f, 1.0f, 0.0f,0.0f,
                      0.5f,  -0.5f, -0.5f, 1.0f, 0.0f,0.0f,
                      0.5f,  -0.5f, 0.5f, 1.0f, 0.0f,0.0f,
                      0.5f,  0.5f, 0.5f, 1.0f, 0.0f,0.0f,

                     -0.5f, -0.5f, -0.5f, 0.0f, -1.0f,0.0f,
                      0.5f, -0.5f, -0.5f, 0.0f, -1.0f,0.0f,
                      0.5f,  -0.5f, 0.5f, 0.0f, -1.0f,0.0f,
                      0.5f,  -0.5f, 0.5f, 0.0f, -1.0f,0.0f,
                     -0.5f,  -0.5f, 0.5f, 0.0f, -1.0f,0.0f,
                     -0.5f, -0.5f, -0.5f, 0.0f, -1.0f,0.0f,

                     -0.5f,  0.5f, -0.5f, 0.0f, 1.0f,0.0f,
                      0.5f,  0.5f, -0.5f, 0.0f, 1.0f,0.0f,
                      0.5f,  0.5f,  0.5f, 0.0f, 1.0f,0.0f,
                      0.5f,  0.5f,  0.5f, 0.0f, 1.0f,0.0f,
                     -0.5f,  0.5f,  0.5f, 0.0f, 1.0f,0.0f,
                     -0.5f,  0.5f, -0.5f, 0.0f, 1.0f,0.0f


             };

             //Generate buffer id,
                glGenVertexArrays(1, &CubeVAO);
                glGenBuffers(1,&VBO);


             // Activate the Vertex Array Object before binding and setting any VB0s and Vertex Attribute Pointers.
                glBindVertexArray(CubeVAO);

              // Activate the VBO
             glBindBuffer(GL_ARRAY_BUFFER, VBO);
             glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); //Copy vertices to VBO

             // Set attribute pointer 0 to hold Position data
             glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(GLfloat), (GLvoid*)0);
             glEnableVertexAttribArray(0); // Enables vertex attribute

             // Set attribute pointer 1 to hold normal data
              glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(GLfloat), (GLvoid*)(3 * sizeof(GLfloat)));
              glEnableVertexAttribArray(1); // Enables vertex attribute

             glBindVertexArray(0); // Deactivates the VAC, which is good practice


         /*Generate buffer ids for lamp (smaller cube)*/
            glGenVertexArrays(1, &LightVAO);

    // activate the VAO
    glBindVertexArray(LightVAO);

    // referencing the same VBO
    glBindBuffer(GL_ARRAY_BUFFER, VBO);

    // set attribute pointer 0 to hold position data for the lamp
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(GLfloat), (GLvoid*)0);
    glEnableVertexAttribArray(0);
    glBindVertexArray(0);

}

“立方体”片段着色器无法编译。变量diffus不存在,但必须存在diffuse:

vec3 phong = (ambient + diffus + specular) * objectColor;

vec3 phong = (ambient + diffuse + specular) * objectColor;

我建议验证着色器编译是否成功glGetShaderiv(..., GL_COMPILE_STATUS, ...)并且链接成功glGetProgramiv(..., GL_LINK_STATUS, ...).

实现验证着色器和程序并记录错误消息的函数:

#include <iostream>
#include <vector>

void CompileStatus( GLuint shader )
{
    GLint status = GL_TRUE;
    glGetShaderiv( shader, GL_COMPILE_STATUS, &status );
    if (status == GL_FALSE)
    {
        GLint logLen;
        glGetShaderiv( shader, GL_INFO_LOG_LENGTH, &logLen );
        std::vector< char >log( logLen );
        GLsizei written;
        glGetShaderInfoLog( shader, logLen, &written, log.data() );
        std::cout << "compile error:" << std::endl << log.data() << std::endl;
    }
}

void LinkStatus( GLuint program )
{
    GLint status = GL_TRUE;
    glGetProgramiv( program, GL_LINK_STATUS, &status );
    if (status == GL_FALSE)
    {
        GLint logLen;
        glGetProgramiv( program, GL_INFO_LOG_LENGTH, &logLen );
        std::vector< char >log( logLen );
        GLsizei written;
        glGetProgramInfoLog( program, logLen, &written, log.data() );
        std::cout << "link error:" << std::endl << log.data() << std::endl;
    }
}

之后验证着色器glCompileShader以及之后的程序glLinkProgram:

void UCreateShader()
{
    // cube Vertex shader
    GLint cubeVertexShader = glCreateShader(GL_VERTEX_SHADER); // Creates the Vertex Shader
    glShaderSource(cubeVertexShader, 1, &cubeVertexShaderSource, NULL); // Attaches the Vertex Shader to the source code
    glCompileShader(cubeVertexShader); // Compiles the Vertex Shader
    CompileStatus( cubeVertexShader );

    // cube Fragment Shader
    GLint cubeFragmentShader = glCreateShader(GL_FRAGMENT_SHADER); // Creates the Fragment Shader
    glShaderSource(cubeFragmentShader, 1, &cubeFragmentShaderSource, NULL);// Attaches the Fragment Shader to the source code
    glCompileShader(cubeFragmentShader); // Compiles the Fragment Shader
    CompileStatus( cubeFragmentShader );

    // Cube Shader program
    cubeShaderProgram = glCreateProgram(); // Creates the Shader program and returns an id
    glAttachShader(cubeShaderProgram, cubeVertexShader); // Attach Vertex Shader to the Shader program
    glAttachShader(cubeShaderProgram, cubeFragmentShader);; // Attach Fragment Shader to the Shader program
    glLinkProgram(cubeShaderProgram); //Link Vertex and Fragment shader, to Shader program
    LinkStatus( cubeShaderProgram );

    // [...]

} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

灯亮了但立方体没有出现 的相关文章

  • 即使我没有#include ,为什么仍然可以使用 std::max 和 std::min ?

    include
  • 实体框架 - 循环更新属性

    我正在尝试找到一种方法来循环 EF 对象的属性并更新这些属性的值 更具体地说 我有 50 个字段 其中最多填充 50 个下拉列表 所有 50 个可能都需要填充 也可能不需要填充 为了解决这个问题 我有一个中继器 最多可以创建 50 个 DD
  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void
  • 无法更新 .mdf 数据库,因为该数据库是只读的(Windows 应用程序)

    我使用 C 创建了一个数据库 Windows 应用程序 我的应用程序在 Windows XP 上成功运行 但在 Vista 或 Windows 7 系统上无法正确执行 我的应用程序显示类似以下内容的消息 无法更新 mdf 数据库 因为该数据
  • WIX 自动生成 GUID *?

    假设我生成产品 ID 为 的 WIX XML 文件 另外 对于每个组件 GUID 我都使用
  • Code First - 实体框架 - 如何公开外键

    我有以下数据对象 public class Customer System Data Entity ModelConfiguration EntityTypeConfiguration
  • 在 GLUT 中使用鼠标滚轮

    我想在 OpenGL GLUT 程序中使用鼠标滚轮来放大和缩小场景 我怎么做 Freeglut 的 glutMouseWheelFunc 回调与版本相关 并且在 X 中不可靠 使用标准鼠标功能并测试按钮 3 和 4 OpenGlut 对 g
  • 使用 C 创建立体声正弦波

    我正在尝试用 C 创建立体声正弦 WAV 并且可能有不同的 可能是空白的 左声道和右声道 使用此函数为每个通道生成一个音调 int16 t create tone float frequency float amplitude float
  • C++ 克隆惯用语中协变返回类型的用处?

    通常的克隆习惯使用协变返回类型 struct Base virtual Base clone struct Derived public Base Derived clone 我读过一些内容 大意是协变返回类型是 C 后来添加的 较旧的编译
  • 使用经度和纬度查找给定距离内的所有附近客户

    我有一个包含客户经度和纬度的数据库 我有一个搜索表单 用户将在其中输入日志 纬度 距离下拉列表包含 50 英里 100 英里 当用户单击搜索时 我想编写一个 linq 查询从数据库中获取此距离半径内的所有客户 如何使用 C 和 linq 来
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L
  • 让 WIX 在项目中包含引用

    我对 WiX 和设置自定义安装程序完全陌生 所以我对问题的主题表示歉意 我有一个内部业务应用程序 日记 它构建并运行良好 因此我按照教程 官方文档添加 WiX 项目并引用日记的 csproj 然后构建并运行这个最基本版本的 WiX 安装程序
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • Parallel.For 和 Break() 误解?

    我正在研究 For 循环中的并行性中断 看完之后this http tipsandtricks runicsoft com CSharp ParallelClass html and this http reedcopsey com 201
  • 专家 C#/.Net/WPF 开发人员应该了解哪些知识? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何带参数调用外部程序?

    我想在我的代码中调用一个 Windows 程序 并使用代码本身确定的参数 我不想调用外部函数或方法 而是调用 WinXP 环境中的实际 exe 或批处理 脚本文件 C 或 C 将是首选语言 但如果使用任何其他语言更容易完成此操作 请告诉我
  • 无论表单上的焦点控件如何,如何捕获 Keys.F1?

    我使用了 KeyDown 事件和一些简单的代码 例如if e KeyCode Keys F1 捕获在表单上按下 F1 但如果表单上有一些文本框 或者表单上有一些带有 Dock Fill 的电子表格 则上面的代码将毫无用处并且不执行任何操作
  • 在同一条线上铸造两次

    我在项目中看到了这段代码 b的类型是void void b int a int unsigned long b 这条线毫无意义吗 我的意思是 这与a int b在所有情况下 这可能会避免 64 位 Unix 系统上的编译器警告unsigne
  • 你将如何开始自动化我的工作? - 第2部分

    后续这个问题 https stackoverflow com questions 2796128 how would you start automating my job 在经历了第一波进货 9 小时的复制 粘贴 后 我现在相信我已经满足
  • C++20 范围太多 |运营商?

    我在这段代码中使用 g 10 2 有谁知道为什么我最后收到编译器错误std views reverse on results3 include

随机推荐

  • 我可以在 PowerPivot 中比较相邻行中同一列中的值吗?

    我有一个 PowerPivot 表 我需要能够确定某个项目处于错误状态的时间 我的数据集看起来像这样 我需要做的是查看 ID 和 State 列中的值 并查看 State 列中前一行的值是否为 ERROR 以及 ID 列中的值是否相同 如果
  • 如何在JavaScript值分配中分配php变量? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将 JavaScript 变量传递给 PHP 如何在此 php 变量上分配 javascript 值 你根本无法做到这一点 你需要了解客户端 服务器端编程之间的区别 你不能将 Javascript
  • CORBA 通信问题

    这可能太本地化了 但我希望有人能帮助我正确地阐明我的问题 因此 我们有一个前端 Web 服务器 它使用 CORBA 与后端应用程序服务器进行通信 我被要求将后端应用程序移植到 LINUX 机器上 我照做了 但是 为了测试它 我尝试将前端 W
  • 从 Applet 打印 JasperReport

    我开发了网络应用程序 它使用JasperReports用于报告目的 因为我必须使用小程序在客户端查看报告 我可以正常在小程序中看到报告 但是当涉及到打印时 当我单击查看器中的 打印 按钮时 它会抛出一个异常 我可以在 Java 控制台中看到
  • 基于频率水平的子集[重复]

    这个问题在这里已经有答案了 我想生成一个 df 它选择与 ID 关联的行 而 ID 又与名为 cutoff 的变量关联 对于本示例 我将截止值设置为 9 这意味着我要选择 df1 中 ID 值与超过 9 行关联的行 我的代码的最后一行生成了
  • 如何在 asp.net 中使用“Post/Redirect/Get”(又名“Redirect after Post”)

    在 asp net 中的某些操作之后进行刷新似乎会使它们再次发生 即使该操作没有意义 想想双重删除 处理这种情况的 Web 方法是在发布后重定向以获得可以刷新的页面的干净版本 而无需将操作重新发布到 Web 服务器 我怎样才能用 ASP N
  • 接受带有自签名证书的 HTTPS 连接

    我正在尝试使用 HTTPS 连接HttpClientlib 但问题是 由于证书不是由公认的证书颁发机构 CA 签署的 例如Verisign 全局标志等 列在 Android 可信证书集中 我不断收到javax net ssl SSLExce
  • 如何通过标题而不是绘图区域来对齐多个绘图?

    我在用着egg对齐页面上的多个绘图 我想知道是否可以通过标题对齐两列a and c 而不是情节面积 谢谢 Code library egg library grid p1 lt ggplot mtcars aes mpg wt colour
  • logback.xml 的 perf4j 设置

    大家好 我想知道 logback xml 与 perf4j 一起使用时的确切配置设置 我在 logback xml 中创建此配置
  • 在 SAS-IML 中循环名称?

    如何将名称为主干 后缀的 SAS 数据集读取到 IML 中 词干作为 SAS 宏变量给出 我打算使用的后缀位于 IML 中的字符串向量中 在 R 中我会使用 suffix lt c s1 s2 for s in suffix data lt
  • 如何在Windows Phone 7中使用AES/ECB/PKCS7Padding算法?

    我是 Windows Phone 开发新手 如何在 WP7 中使用 AES ECB PKCS7Padding 算法 在谷歌搜索时 我看到了很多关于 Bouncy Castle 的建议 但我对这个充气城堡并没有很清楚的了解 这是一种算法吗 我
  • 如何在 Swift 中检查 URL 的有效性?

    尝试让应用启动默认浏览器访问某个 URL 但前提是输入的 URL 有效 否则会显示一条消息 指出该 URL 无效 我该如何使用 Swift 检查有效性 如果您的目标是验证您的应用程序是否可以打开 URL 那么您可以执行以下操作 虽然 saf
  • 在 Raspberry PI 上安装“ring.cx SIP 客户端”

    情况 我希望在我的 Raspberry Pi 上进行基于终端 无头 的 SIP 呼叫 并且我已经使用 linphone 尝试过此操作 RaspberryPI 使用 linphonec 或替代 SIP 软电话进行 SIP 出站呼叫 由于我目前
  • 直接从字节数组播放声音 - Java

    我正在尝试使用以下方法播放存储为字节数组的声音 byte clickSamples getAudioFileData sound wav ByteBuffer buffer ByteBuffer allocate bufferSize 2
  • Geoserver - 使用 DWITHIN 过滤点

    首先 我是 Geoserver 和 Openlayers 的新手 我一直试图在 Geoserver 端使用图层预览页面来使用 Openlayer 查看器查看我的图层 我最终会将其实现为 Openlayers WFS GET 请求 我想要完成
  • 强制 eclipse 重新加载 Python 模块

    我已经启动了一个 Eclipse PyDev 项目 并发现BeautifulSoup失踪 我安装它使用easy install 现在脚本可以从命令行正常运行 然而 Eclipse 仍然认为BeautifulSoup未安装 显示烦人的错误消息
  • 如何为 PostgreSQL JSONB 平面文本数组建立索引以进行模糊和右锚定搜索?

    PostgreSQL 版本 9 6 The events表有一个visitorsJSONB 列 CREATE TABLE events name VARCHAR 256 visitors JSONB The visitors列包含一个 平面
  • Intellij IDEA 和 Maven,在每个小更改上禁用读取 pom.xml,即使没有保存

    这导致 intellij 变得缓慢并冻结 这非常烦人 看起来好像它分析了类似于 pom xml 的其他文件 导致其他地方也冻结 可以禁用此功能吗 In Windows Operating system Press Ctrl Alt S or
  • apache tomcat 503自定义错误页面

    我使用 mod jk 设置在端口 80 上运行 apache2 和 tomcat6 不是从 apt 存储库安装 而是手动下载并安装 通过浏览器访问 jsp servlet 页面http myapp mydomain com 虚拟主机是在 t
  • 灯亮了但立方体没有出现

    我正在尝试在立方体上使用照明 但我不明白哪里出了问题 我可以看到光源 但屏幕的其余部分显示为黑色 所以我不明白为什么立方体消失了 这是代码 Header Inclusions include